SQL Server多条件提取列数据并转换特定格式的技术求助
SQL Server 2005 按规则提取并转换PartNoAsIs列数据
针对Microsoft SQL Server Standard Edition 9.00.2047.00(即SQL Server 2005)环境,以下是整合后的查询语句,可实现对[NIMS_Eng_Test].[dbo].[Madill_Exraction_Test]表中[PartNoAsIs]列的规则化处理:
处理规则
- 保留长度为6位的纯数值
- 若值为首字母+5位数字(总长度6),将首字母替换为0(如
L12345转为012345) - 若值为首字母+6位数字(总长度7),将首字母替换为0(如
L123456转为0123456) - 其余值原样返回
整合后的查询语句
SELECT PartNoAsIs, CASE -- 规则1:匹配6位纯数字 WHEN LEN(PartNoAsIs) = 6 AND PartNoAsIs LIKE '[0-9][0-9][0-9][0-9][0-9][0-9]' THEN PartNoAsIs -- 规则2:匹配首字母+5位数字(总长度6) WHEN LEN(PartNoAsIs) = 6 AND PartNoAsIs LIKE '[A-Za-z][0-9][0-9][0-9][0-9][0-9]' THEN STUFF(PartNoAsIs, 1, 1, '0') -- 规则3:匹配首字母+6位数字(总长度7) WHEN LEN(PartNoAsIs) = 7 AND PartNoAsIs LIKE '[A-Za-z][0-9][0-9][0-9][0-9][0-9][0-9]' THEN STUFF(PartNoAsIs, 1, 1, '0') -- 其余情况原样返回 ELSE PartNoAsIs END AS ProcessedPartNo FROM [NIMS_Eng_Test].[dbo].[Madill_Exraction_Test]
示例输出
| PartNoAsIs | ProcessedPartNo |
|---|---|
| 123456 | 123456 |
| L12345 | 012345 |
| X987654 | 0987654 |
| ABC123 | ABC123 |
| 12345 | 12345 |
内容的提问来源于stack exchange,提问作者Brute
相关产品推荐
相关产品推荐

