在列中替换Oracle

时间:2019-01-13 07:44:49

标签: sql oracle substr

在Oracle中要减去字符串的语法是什么 我有“ 123456789#073” 我只想要#

之后的内容

substr(table.col,17,3) 那样行吗 ?

2 个答案:

答案 0 :(得分:2)

最可能的最简单(也是性能最高)的方法是使用基本字符串函数:

SELECT SUBSTR(col, INSTR(col, '#') + 1)
FROM yourTable;

Demo

我们也可以在这里尝试使用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)