美好的一天,
我在Netezza SQL中发现了一段非常有用的代码,该代码从ID号中删除了前导零。但是,我并不完全了解它背后的SQL逻辑处理。有人可以协助解释SQL如何处理下面的代码行吗?我了解一个人从内而外读取内容,但是LTRIM和第二个replace语句之间的部分使我感到困惑。
SUBSTR(REPLACE(LTRIM(REPLACE(TRIM(ID_NO),'0',''))),'','0'),1,13)
谢谢。
答案 0 :(得分:2)
LTRIM
使用空格。所以这段代码
a)删除所有周围的空格(TRIM
)
b)用空格(内部REPLACE
)替换0,
c)LTRIM
s字符串(它将仅删除前导空格,由于(a),该空格最初必须为0)
d)将白幕替换回0s(外部REPLACE
)
e)(此处不相关),然后对结果进行SUBSTRING
。
总体效果是,对于字符串开头的那些0 ,它们将被删除。 LTRIM
不会影响所有其他0(假装为空格)。
答案 1 :(得分:1)
您可以简单地使用转换功能。如您所知,只有数字会输入。
declare @tst as Varchar(50)=' 001256'
select Convert(int,@tst)
输出: 1256