【发布时间】:2018-08-27 13:31:06
【问题描述】:
我有一个表,其列 LIST_OF_NUMBERS 包含以下字符串:
10, 20, 395, 443, 534, 734, 954, 105, 156
我想将 LIST_OF_NUMBERS 列截断为 10 个字符,如下所示:
LEFT(LIST_OF_NUMBERS,10)
10, 20, 39
但是,如果字符串列表中的数字被部分截断,我想截断整个数字。例如,在我的情况下,我不想显示 39 因为它是误解。我想将整数截断如下:
10, 20,
我相信可以通过以下条件实现:
如果字符串不以逗号结尾,则截断字符串直到它以逗号结尾。
如何在 sql 脚本中翻译这个条件?
请注意,我是创建存储过程的新手。
【问题讨论】:
-
将逗号分隔的值存储在单个列中是一个坏主意。阅读数据库规范化
-
看起来有一个
instr()函数可用,但如果我能从 help.sap.com 找到文档,我会被诅咒的(无论如何,它现在几乎无法运行)。也许尝试类似Left(yourfield, Instr(Substr(yourfield, 10, Length(yourfield)-10) + 10, ","))之类的东西 基本上找到出现在位置 10 或更高位置的第一个逗号,并使用该位置来确定Left()函数的第二个参数。我从来没有用过 Hana,所以我可能对这里的语法有点不理解。 -
@JNevill 是对的!该函数称为
LOCATE,可以通过提供-1 作为起始位置,从字符串右侧开始寻找悬空的,。然后 SQL 表达式将类似于LEFT (<yourfield> , LOCATE(LEFT(<yourfield>, 10), ',', -1) -1) -
谢谢@JNevill 和 Lars-br 它运行良好。
-
@JNevill 您应该将此评论转换为答案,以便可以关闭此问题。