我刚刚遇到了一个有趣的问题,试图从SQL中的非数字字段修剪前导零。 (因为它可以包含字符,所以它不能只转换为数字然后再转换。)
这是我们最终使用的:
SELECT REPLACE(LTRIM(REPLACE(fieldWithLeadingZeroes,'0',' ')),' ','0')
它用空格替换零,左边修剪它,然后将零重新放入。我认为这是一种非常聪明且有趣的方法,但如果你以前从未遇到它,那就不那么可读了。
有更明确的方法吗?有没有更有效的方法呢?或者其他任何方式来做这个时期?我对这个问题很感兴趣,并且有兴趣看到任何绕过它的方法。
答案 0 :(得分:11)
查找第一个非零字符,子字符串结束(可以为最大类型设置20亿)
LTRIM是可选的,真的
DECLARE @MyVar varchar(8000)
SET @MyVar = '000foobar'
SELECT LTRIM(SUBSTRING(@MyVar, PATINDEX ('%[^0]%', @MyVar), 8000))
SET @MyVar = '000000 oh my lord'
SELECT LTRIM(SUBSTRING(@MyVar, PATINDEX ('%[^0]%', @MyVar), 8000))
答案 1 :(得分:0)
检查TRIM功能 http://www.1keydata.com/sql/sql-trim.html
SELECT TRIM(LEADING '0' FROM fieldWithLeadingZeroes)