我刚刚遇到了一个有趣的问题,试图修剪SQL中非数字字段的前导零.(因为它可以包含字符,所以它不能只转换为数字然后再转换.)
这就是我们最终使用的内容:
SELECT REPLACE(LTRIM(REPLACE(fieldWithLeadingZeroes,'0',' ')),' ','0')
Run Code Online (Sandbox Code Playgroud)
它用空格替换零,左边修剪它,然后将零重新放入.我认为这是一个非常聪明和有趣的方法来做到这一点,虽然如果你以前从未遇到它,那就不那么可读了.
有没有更明确的方法来做到这一点?有没有更有效的方法呢?或者其他任何方式来做这个时期?我对这个问题很感兴趣,并且有兴趣看到任何绕过它的方法.
gbn*_*gbn 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))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5495 次 |
| 最近记录: |