[英]How to create new column based on values after "/" in other column in Oracle?
我在 Oracle 中有帶有“col1”的表:
col1
------
email1.com/GGR2
pokmail.com/AA
rrajd.com.nl/RRe2
我需要用“/”之后的值創建“col2”。 因此,我需要以下內容:
col1 | col2
--------------------------
email1.com/GGR2 |GGR2
pokmail.com/AA |AA
rrajd.com.nl/RRe2 |RRe2
我該如何在 Oracle 中做到這一點?
正則表達式或substr
+ instr
:
SQL> with test (col1) as
2 (select 'email1.com/GGR2' from dual union all
3 select 'pokmail.com/AA' from dual union all
4 select 'rrajd.com.nl/RRe2' from dual
5 )
6 select col1,
7 regexp_substr(col1, '\w+$') col2_first,
8 --
9 substr(col1, instr(col1, '/') + 1) col2_second
10 from test;
COL1 COL2_FIRST COL2_SECOND
----------------- ----------------- -----------------
email1.com/GGR2 GGR2 GGR2
pokmail.com/AA AA AA
rrajd.com.nl/RRe2 RRe2 RRe2
SQL>
您可以使用:
SELECT col1,
CASE INSTR(col1, '/')
WHEN 0
THEN NULL
ELSE SUBSTR(col1, INSTR(col1, '/') + 1)
END AS col2
FROM table_name;
或者,使用(較慢的)正則表達式:
SELECT col1,
REGEXP_SUBSTR(col1, '/(.*)', 1, 1, NULL, 1) AS re_col2
FROM table_name;
其中,對於樣本數據:
CREATE TABLE table_name (col1) AS
SELECT 'email1.com/GGR2' FROM DUAL UNION ALL
SELECT 'pokmail.com/AA' FROM DUAL UNION ALL
SELECT 'rrajd.com.nl/RRe2' FROM DUAL UNION ALL
SELECT 'example.com/ab/cd' FROM DUAL UNION ALL
SELECT 'example.com' FROM DUAL;
輸出:
COL1 COL2 email1.com/GGR2 GGR2 pokmail.com/AA AA rrajd.com.nl/RRe2 RRe2 例子.com A B C D 例子.com
筆記:
/
字符,這也將起作用。SUBSTR(col1, INSTR(col1, '/') + 1)
並且字符串不包含/
那么它將返回所有內容而不是返回NULL
。REGEXP_SUBSTR(col1, '\w+$')
並且字符串不包含或包含多個/
字符(或任何其他非單詞字符),則它不會在第一個/
之后返回 substring 。比較輸出:
SELECT col1,
CASE INSTR(col1, '/')
WHEN 0
THEN NULL
ELSE SUBSTR(col1, INSTR(col1, '/') + 1)
END AS col2a,
REGEXP_SUBSTR(col1, '/(.*)', 1, 1, NULL, 1) AS col2b,
SUBSTR(col1, INSTR(col1, '/') + 1) AS col2c,
REGEXP_SUBSTR(col1, '\w+$') AS col2d
FROM table_name;
輸出:
COL1 COL2A COL2B COL2C COL2D email1.com/GGR2 GGR2 GGR2 GGR2 GGR2 pokmail.com/AA AA AA AA AA rrajd.com.nl/RRe2 RRe2 RRe2 RRe2 RRe2 example.com/ab/cd A B C D A B C D A B C D 光盤 例子.com 例子.com com
db<> 在這里擺弄
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.