在Oracle中要减去字符串的语法是什么 我有“ 123456789#073” 我只想要#
之后的内容substr(table.col,17,3) 那样行吗 ?
答案 0 :(得分:2)
最可能的最简单(也是性能最高)的方法是使用基本字符串函数:
SELECT SUBSTR(col, INSTR(col, '#') + 1)
FROM yourTable;
我们也可以在这里尝试使用REGEXP_REPLACE
SELECT REGEXP_REPLACE(col, '.*#(.*)', '\1')
FROM yourTable;
regex选项通常不会像第一个查询那样执行。这样做的原因是,调用正则表达式会产生性能开销。如果您希望将来字符串逻辑可能会更改或变得更加复杂,则可能需要考虑使用正则表达式选项。否则,请尽可能使用基本字符串函数。
答案 1 :(得分:0)
我认为最直接的方法可能是regexp_substr()
:
select regexp_substr('123456789 #073', '[^#]+$')
from dual;
正则表达式说:“让我在字符串末尾所有非哈希字符”。
如果您碰巧知道有3个字符,并且确实想要字符串的最后三个字符:
select substr('123456789 #073', -3)