Oracle中的substr来自列

问题描述 投票:2回答:2

什么是Oracle中的substr语法减去字符串我有“123456789#073”我只想要#之后的内容

substr(table.col,17,3)可以吗?

sql oracle substr
2个回答
2
投票

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

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

Demo

我们也可以尝试在这里使用REGEXP_REPLACE

SELECT REGEXP_REPLACE(col, '.*#(.*)', '\1')
FROM yourTable;

正则表达式选项通常不会像第一个查询一样好。这样做的原因是调用正则表达式会导致性能开销。如果您希望字符串逻辑可能会更改或将来变得更复杂,您可能需要考虑使用正则表达式选项。否则,尽可能使用基本字符串函数。


0
投票

我认为最直接的方法可能是regexp_substr()

select regexp_substr('123456789 #073', '[^#]+$')
from dual;

正则表达式说:“在字符串的末尾找到所有非哈希字符”。

如果你碰巧知道有3个字符并且真的想要字符串的最后三个字符:

select substr('123456789 #073', -3)
© www.soinside.com 2019 - 2024. All rights reserved.