【发布时间】:2017-02-17 15:06:43
【问题描述】:
我有一个查询将逗号视为字符串中的分隔符。我想取消最后一次出现。
示例:字符串:a、b、c、d 字符串:e、f、g、h、i、j
select regexp_substr(string, '[^,]+', -1, 1)
from dual;
应该返回:d 和 j
但错误信息显示 -1 位置超出范围。
Oracle 文档:https://docs.oracle.com/cd/E11882_01/olap.112/e23381/row_functions063.htm#OLAXS456
【问题讨论】:
-
第一个字符串中的空格是怎么回事?如果逗号是真正的分隔符,则第一个示例字符串的最后一个“标记”是
' d'(长度为 2 的字符串:空格和字母 d)。 -
我可以接受带空格的字符串。
-
您发布的文档参考是针对 Oracle OLAP 的,它是一个独立的产品,与 Oracle 数据库不同。如果您安装了 Oracle OLAP(无论如何,我不知道),您可能已经将功能扩展到
regexp_substr和其他功能,但这与 Oracle 数据库无关。标准 Oracle SQL 的regexp_substr文档不允许否定位置。 -
已确认。谢谢
标签: oracle regexp-substr