【发布时间】:2019-01-13 07:44:49
【问题描述】:
Oracle 中 substr 减去字符串的语法是什么 我有“123456789 #073” 我只想要#之后的内容
substr (table.col, 17,3) 那样可以么 ?
【问题讨论】:
Oracle 中 substr 减去字符串的语法是什么 我有“123456789 #073” 我只想要#之后的内容
substr (table.col, 17,3) 那样可以么 ?
【问题讨论】:
最简单(也是最高效)的方法是使用基本字符串函数:
SELECT SUBSTR(col, INSTR(col, '#') + 1)
FROM yourTable;
我们也可以在这里尝试使用REGEXP_REPLACE:
SELECT REGEXP_REPLACE(col, '.*#(.*)', '\1')
FROM yourTable;
regex 选项通常不会像第一个查询那样执行。这样做的原因是调用正则表达式会产生性能开销。如果您预计字符串逻辑将来可能会更改或变得更加复杂,您可能需要考虑使用正则表达式选项。否则,尽可能使用基本字符串函数。
【讨论】:
我觉得最直接的方法可能是regexp_substr():
select regexp_substr('123456789 #073', '[^#]+$')
from dual;
正则表达式说:“让我得到字符串末尾的所有非散列字符”。
如果你碰巧知道有 3 个字符并且真的想要字符串的最后三个字符:
select substr('123456789 #073', -3)
【讨论】: