如何编写SQL查询仅移除字段首字符的0(值均为3位长度)
修正后的SQL查询方案:仅跳过首字符的0展示3位数字字段
由于你的字段都是固定3位长度,不需要用复杂的PATINDEX逻辑,直接针对首字符判断即可,以下是两种可行的修正方案:
方案一:使用CASE条件判断
SELECT CASE WHEN LEFT(numbers, 1) = '0' THEN SUBSTRING(numbers, 2, 2) ELSE numbers END AS numbers FROM your_table;
逻辑说明:
LEFT(numbers, 1) = '0'检查字段的首字符是否为0- 满足条件时,用
SUBSTRING(numbers, 2, 2)截取从第2位开始的2个字符(刚好是原3位数字去掉首0后的部分) - 不满足条件时,直接返回原字段值
方案二:使用STUFF函数简化写法
SELECT CASE WHEN LEFT(numbers, 1) = '0' THEN STUFF(numbers, 1, 1, '') ELSE numbers END AS numbers FROM your_table;
逻辑说明:
STUFF(numbers, 1, 1, '')作用是从第1位开始,删除1个字符(即首0),替换为空字符串- 同样通过CASE判断仅在首字符为0时执行替换操作
两种方案都能完美匹配你的需求,测试示例数据后输出结果如下:
numbers 123 23 03 102
内容的提问来源于stack exchange,提问作者Goffer
相关产品推荐
相关产品推荐

