【发布时间】:2014-01-21 03:27:49
【问题描述】:
我需要从字符串 '000-111-222-333' 中单独提取 '000-111' ,即 Teradata 中第二个 '-' 之前的部分字符串,而无需对位置进行硬编码,因为字符串中的字符数可能会有所不同.提前致谢
【问题讨论】:
-
您已经尝试过什么,您所做的任何研究的结果是什么? stackoverflow.com/questions/how-to-ask
我需要从字符串 '000-111-222-333' 中单独提取 '000-111' ,即 Teradata 中第二个 '-' 之前的部分字符串,而无需对位置进行硬编码,因为字符串中的字符数可能会有所不同.提前致谢
【问题讨论】:
取决于您的 TD 版本(或安装的 UDF):
SUBSTRING(x FROM 1 FOR INSTR(x,'-',1,2) - 1)
这应该适用于任何 TD 版本:
SUBSTRING(x FROM 1 FOR POSITION('-' IN x) + POSITION('-' IN SUBSTRING(x FROM POSITION('-' IN x) + 1)) - 1)
【讨论】: