此问题已在此处有答案:
How to get the nth string from the delimited strings using REGEXP_SUBSTR in Oracle(2个答案)
上个月关门了。
我需要一个Oracle SQL语句从下面的例子中提取每个分隔符之间的文本,NA$Sales$India/Blore$Hardware$Sold
输出应在不同的列中返回
Region Department Country Product_type Status
NA Sales India/Blore Hardware Sold
我尝试了下面的语句,但它只返回第一个字符串之后的字符串
SUBSTR('NA$Sales$India/Blore$Hardware$Sold', INSTR('NA$Sales$India/Blore$Hardware$Sold','$')+1,
INSTR('NA$Sales$India/Blore$Hardware$Sold','$') + INSTR('NA$Sales$India/Blore$Hardware$Sold','$')+ LENGTH(NA$Sales$India/Blore$Hardware$Sold)) AS test
2条答案
按热度按时间2vuwiymt1#
一个简单的选择是使用正则表达式。
样本数据:
查询方式:
或者,如果您更喜欢
substr + instr
组合(具有相同的样本数据):查询方式:
fdbelqdn2#
您可以使用
REGEX_SUBSTR
提取由美元符号分隔的文本。请注意,在正则表达式中,美元符号必须用'$'转义,因为它具有特殊含义(行尾)。REGEX_SUBSTR
的最后一个参数决定提取哪个所谓的 group。(组用括号表示。)结果是:
| 区域|部|国家|产品类型|地位|
| --|--|--|--|--|
| NA|销售|印度/布洛尔|硬件|出售|