比较来自世界各地的卖家的域名和 IT 服务价格

Split 使用分隔符的位置 oracle SQL

我有一个字符串,我想 split 这条线是特定位置的分隔符。

例如,我的字符串
F/P/O

, 我正在寻找的结果是:


因此,我想将镇部分隔符分开。

注意:我的一些字符串是
F/O

, 矿井 SQL 下面正在正常工作并返回所需的结果。

在 SQL 我把它写得如下:


SELECT Substr/'F/P/O', 1, Instr/'F/P/O', '/'/ - 1/ part1, 
Substr/'F/P/O', Instr/'F/P/O', '/'/ + 1/ part2
FROM dual


以下是结果:


为什么这发生了,我怎样才能解决它?
已邀请:

石油百科

赞同来自:

因此,我想将镇部分隔符分开。

我知道这是一个古老的问题,但这是一个简单的要求

它是

这是足够的 SUBSTR 和 INSTR.

REGEXP

- 它还有更多

慢的



密集的

运营 CPU, 比旧功能 subtsr 和 instr.


SQL> WITH DATA AS
2 / SELECT 'F/P/O' str FROM dual
3 /
4 SELECT SUBSTR/str, 1, Instr/str, '/', -1, 1/ -1/ part1,
5 SUBSTR/str, Instr/str, '/', -1, 1/ +1/ part2
6 FROM DATA
7 /

PART1 PART2
----- -----
F/P O


正如你所说,你需要最多

进一步

分离器,它将意味着第一分离器



.

你的方法很漂亮,但你错过了

start_position



INSTR

. 如果是价值 start_position

消极的

, 功能
INSTR

计算字符数 start_position 从行的末尾,然后在字符串开头的方向上执行搜索。

小姐请别说爱

赞同来自:

你想为此使用
regexp_substr//

. 它应该为您的示例工作:


select regexp_substr/val, '[^/]+/[^/]+', 1, 1/ as part1,
regexp_substr/val, '[^/]+$', 1, 1/ as part2
from /select 'F/P/O' as val from dual/ t


[/url]
, 顺便说一下,位于 SQL Fiddle.

哦。 我错过了这个问题的一部分,在那里说

最新的

分隔器。 为此,我们可以使用
regex_replace//

第一部分:


select regexp_replace/val, '/[^/]+$', '', 1, 1/ as part1,
regexp_substr/val, '[^/]+$', 1, 1/ as part2
from /select 'F/P/O' as val from dual/ t



[/url]
它对应 SQL Fiddle.

要回复问题请先登录注册