修剪,替换和左修剪的SQL功能说明顺序

时间:2018-07-23 08:07:36

标签: sql netezza

美好的一天,

我在Netezza SQL中发现了一段非常有用的代码,该代码从ID号中删除了前导零。但是,我并不完全了解它背后的SQL逻辑处理。有人可以协助解释SQL如何处理下面的代码行吗?我了解一个人从内而外读取内容,但是LTRIM和第二个replace语句之间的部分使我感到困惑。

SUBSTR(REPLACE(LTRIM(REPLACE(TRIM(ID_NO),'0',''))),'','0'),1,13)

谢谢。

2 个答案:

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