从SQL字段修剪前导零的算法?

时间:2010-03-16 19:51:19

标签: sql-server trim

我刚刚遇到了一个有趣的问题,试图从SQL中的非数字字段修剪前导零。 (因为它可以包含字符,所以它不能只转换为数字然后再转换。)

这是我们最终使用的:

SELECT REPLACE(LTRIM(REPLACE(fieldWithLeadingZeroes,'0',' ')),' ','0')

它用空格替换零,左边修剪它,然后将零重新放入。我认为这是一种非常聪明且有趣的方法,但如果你以前从未遇到它,那就不那么可读了。

有更明确的方法吗?有没有更有效的方法呢?或者其他任何方式来做这个时期?我对这个问题很感兴趣,并且有兴趣看到任何绕过它的方法。

2 个答案:

答案 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)