Tim*_*m C 93 sql t-sql sql-server
我正在研究从SQLServer数据库读取以生成提取文件的SQL查询.从特定字段中删除前导零的要求之一,这是一个简单的VARCHAR(10)字段.因此,例如,如果字段包含'00001A',则SELECT语句需要将数据返回为'1A'.
SQL中有没有办法以这种方式轻松删除前导零?我知道有一个RTRIM功能,但这似乎只是删除空格.
Ian*_*ill 144
select substring(ColumnName, patindex('%[^0]%',ColumnName), 10)
Run Code Online (Sandbox Code Playgroud)
小智 24
select replace(ltrim(replace(ColumnName,'0',' ')),' ','0')
Run Code Online (Sandbox Code Playgroud)
小智 10
你可以使用这个:
SELECT REPLACE(LTRIM(REPLACE('000010A', '0', ' ')),' ', '0')
Run Code Online (Sandbox Code Playgroud)
小智 5
select substring(substring('B10000N0Z', patindex('%[0]%','B10000N0Z'), 20),
patindex('%[^0]%',substring('B10000N0Z', patindex('%[0]%','B10000N0Z'),
20)), 20)
Run Code Online (Sandbox Code Playgroud)
Returns N0Z,也就是说,将摆脱前导零和它们之前的任何东西。
小智 5
我有同样的需求并使用了这个:
select
case
when left(column,1) = '0'
then right(column, (len(column)-1))
else column
end
Run Code Online (Sandbox Code Playgroud)