什么是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;
正则表达式选项通常不会像第一个查询一样好。这样做的原因是调用正则表达式会导致性能开销。如果您希望字符串逻辑可能会更改或将来变得更复杂,您可能需要考虑使用正则表达式选项。否则,尽可能使用基本字符串函数。
我认为最直接的方法可能是regexp_substr()
:
select regexp_substr('123456789 #073', '[^#]+$')
from dual;
正则表达式说:“在字符串的末尾找到所有非哈希字符”。
如果你碰巧知道有3个字符并且真的想要字符串的最后三个字符:
select substr('123456789 #073', -3)