【发布时间】:2019-04-09 22:13:07
【问题描述】:
我想从第二次出现特定字符之间的字符串中提取不同长度的字母数字文本。
我尝试了各种形式的 substr 和 regexp_substr,但似乎无法正确使用语法。这用于 Teradata SQL 助手。在过去,我必须创建一个临时表并使用 substr 两次,然后才能将字符串修剪为我需要的内容。我想一口气做完。
SELECT regexp_substr('Channel:DF GB, Order Num:12345T6, Order Date:01/01/2019, Charge Codes:TAXES,,GBRAX', 'Num\\:+(\\:+)',1,2, ':') as RESULTING_STRING
我想要的结果是只返回“Num:”和下一个“,”之间的内容,在本例中为“12345T6”。订单号的长度可以变化,因此它不是固定长度。当我运行我的代码时,实际输出是“?”由 Teradata 返回。我做错了什么?
【问题讨论】:
-
您已为多个数据库标记了您的问题。您实际使用的是哪一个,Teradata 还是 Oracle?
-
我正在使用 Teradata
标签: sql teradata regexp-substr