我需要从字符串中提取子字符串。下面提供了可用的ID。
0234-RDRT- RS111 -M-EU
0234-RDRT- RSD123 -M-EU
我需要将突出显示的内容提取到一列中。如何将所有字符提取到Microsoft SQL Server的同一列中。
答案 0 :(得分:4)
REGEX_SUBSTR
的第四个参数称为occurence
。您只需要为每列设置要查看的事件:
CREATE TABLE T (id varchar2(30));
INSERT INTO T VALUES ('0234-RDRT-RS111-M-EU');
INSERT INTO T VALUES ('0234-RDRT-RSD123-M-EU');
SELECT regexp_substr(id,'[^-]+',1,1) as col1,
regexp_substr(id,'[^-]+',1,2) as col2,
regexp_substr(id,'[^-]+',1,3) as col3,
regexp_substr(id,'[^-]+',1,4) as col4,
regexp_substr(id,'[^-]+',1,5) as col5
FROM t;
COL1 COL2 COL3 COL4 COL5
0234 RDRT RS111 M EU
0234 RDRT RSD123 M EU
有关更多详细信息,请参见Oracle文档中的REGEX_SUBSTR
。
答案 1 :(得分:0)
您可以通过在破折号上将它们拆分来提取列id
的所有值
select regexp_substr(id,'[^-]+', 1, level)
from (select '0234-RDRT-RSD123-M-EU' as id
from dual)
connect by regexp_substr(id, '[^-]+', 1, level) is not null
结果有5行。 然后,您可以根据需要利用结果
答案 2 :(得分:-1)
基于'-'分割,存储在字符串数组中,然后使用第3个元素。