从SQL语句中的字段中删除前导零

时间:2020-03-06 14:21:04  来源:igfitidea点击:

我正在处理从SQLServer数据库读取以生成提取文件的SQL查询。从特定字段中删除前导零的要求之一是一个简单的" VARCHAR(10)"字段。因此,例如,如果该字段包含" 00001A",则SELECT语句需要将数据返回为" 1A"。

SQL中是否可以通过这种方式轻松删除前导零?我知道有一个" RTRIM"功能,但这似乎只能删除空格。

解决方案

select substring(ColumnName, patindex('%[^0]%',ColumnName), 10)

如果我们希望查询返回0而不是零或者任何其他值,则可以将其转换为如下的case语句:

select CASE
      WHEN ColumnName = substring(ColumnName, patindex('%[^0]%',ColumnName), 10) 
       THEN '0'
      ELSE substring(ColumnName, patindex('%[^0]%',ColumnName), 10) 
      END