gpt4 book ai didi

Oracle,从右边开始的子串然后向左填充,奇怪的行为

转载 作者:行者123 更新时间:2023-12-01 15:33:28 25 4
gpt4 key购买 nike

好的,所以我有一个 ASN_NO,它可以是 30 个字符。

我需要选择最右边的 10 个字符。没问题。

SUBSTR(ASN_NO,-10, 10) -- this works fine

但有时 ASN_NO 可能少于 10 个字符,在这种情况下我需要用左零填充它。

LPAD(ASN_NO,10,'0') -- this works when less than 10 characters, except when having an ASN_NO greater it substrings from the left

那么如果我尝试结合使用它们

LPAD(SUBSTR(ASN_NO,-10, 10),10,'0') -- this gives me a null result when less than 10 but i dont understand why?

然后我想到了这个:

LPAD(SUBSTR(ASN_NO, CASE WHEN LENGTH(SI.ASN_NO) >= 10 THEN -10 ELSE -LENGTH(ASN_NO) END, 10),10,'0') 

当小于 10 时,最后一个语句使用长度和子字符串一起工作......但是我是否过度工作/过度思考这个?任何人都知道发生了什么更清洁的方式?

最佳答案

当您询问少于 10 个字符的字符串的最后 10 个字符时,您会得到 NULL。

您需要先 LPAD,然后再 SUBSTR。

当您想获取所有字符时,SUBSTR 的第二个参数 (LENGTH) 也已过时。

关于Oracle,从右边开始的子串然后向左填充,奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30265111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com