使用列值的多个条件提取数据?

Extract data using multiple conditions for the column value?

提问人:Brute 提问时间:6/9/2023 最后编辑:Brute 更新时间:6/10/2023 访问量:57

问:

从某个列中,我需要以下类型的数据:

  • 值长度为 6 个字符,为数字
  • “L”是后跟 5 个数字字符的任意字母,例如 L12345,L 需要变成 0,因此该值应为 012345
  • “L”是后跟 6 个数字字符的任何字母,例如L123456 L 需要转换为 0,因此该值应为 0123456

其余值将按原样提取。

我在单独的查询中拥有所有条件: 条件 1:

SELECT [PartNoAsIs]
FROM [NIMS_Eng_Test].[dbo].[Madill_Exraction_Test]
Where  LEN(PartNoAsIs) = 6 AND IsNumeric(PartNoAsIs)=1

条件 2:

SELECT [PartNoAsIs]
FROM [NIMS_Eng_Test].[dbo].[Madill_Exraction_Test]
WHERE [PartNoAsIs] LIKE '[A-Za-z][0-9][0-9][0-9][0-9][0-9]'

条件 3 与条件 2 几乎相同

从条件 1 和 2 开始,L 需要转换为 0,因此该值应分别为 012345 和 012456。然后,必须提取应用这 3 个条件后剩余的其余值。

附上示例输出的图片enter image description here

运行 Microsoft SQL Server 标准版 9.00.2047.00 任何帮助都是值得赞赏的!

sql sql-server sql-server-2005

评论


答:

1赞 Tim Biegeleisen 6/9/2023 #1

您可以在此处使用该功能:RIGHT()

SELECT PartNoAsIs, '0' + RIGHT(PartNoAsIs, LEN(PartNoAsIs) - 1) AS PartOut
FROM [NIMS_Eng_Test].[dbo].[Madill_Exraction_Test]
WHERE PartNoAsIs LIKE '[A-Za-z][0-9][0-9][0-9][0-9][0-9]' OR
      PartNoAsIs LIKE '[A-Za-z][0-9][0-9][0-9][0-9][0-9][0-9]';

对于其余数据,请使用:

SELECT *
FROM [NIMS_Eng_Test].[dbo].[Madill_Exraction_Test]
WHERE PartNoAsIs NOT LIKE '[A-Za-z][0-9][0-9][0-9][0-9][0-9]' AND
      PartNoAsIs NOT LIKE '[A-Za-z][0-9][0-9][0-9][0-9][0-9][0-9]';

评论

0赞 Brute 6/10/2023
感谢您的回答!查询有效,所以这很棒。但是,我还需要查询遗漏的数据。我有大约 12000 个条目,此查询提供了 1400 个条目。我将如何获得 10600 行的剩余部分?
0赞 Tim Biegeleisen 6/10/2023
您应该添加示例数据,以显示您希望如何查看其他不匹配的数据。
0赞 Brute 6/10/2023
添加了示例输出的图片。