[英]SQL Query to select a specific part of the values in a column
我在數據庫中有一個表,其中一列的格式為AAA-BBBBBBB-CCCCCCC
(在下表中的Id列中),其中 A、B 和 C 都是數字(0-9)。 我想編寫一個SELECT
查詢,以便對於此列,我只需要BBBBBBB-CCCCCCC
格式的值。 我是 SQL 新手,所以不確定如何執行此操作。 我嘗試使用SPLIT_PART
-
但不確定如何加入第二和第三部分。
桌子 -
ID | 姓名 | 年齡 |
---|---|---|
123-4567890-1234567 | 名 | 199 |
456-7890123-4567890 | 狂暴狂 | 200 |
所以當查詢被寫入時,輸出應該是這樣的
輸出
4567890-1234567
7890123-4567890
正如請求評論中所述,當您對其部分感興趣時,您不應存儲組合數字。 而是將零件存儲在單獨的列中。
但是,由於格式是固定的 'AAA-BBBBBBB-CCCCCC',所以很容易得到你感興趣的子字符串。只需從第五個位置取字符串:
select substr(col, 5) from mytable;
您可以選擇從第 4 個字符開始的列的右側部分
SELECT RIGHT(Id, LEN(Id)-4) AS TrimmedId;
使用regexp_substr
另一種選擇
with x ( c1,c2,c3 ) as
(
select '123-4567890-1234567', 'First Name' , 199 from dual union all
select '456-7890123-4567890', 'Hulkamania' , 200 from dual
)
select regexp_substr(c1,'[^-]+',1,2)||'-'||regexp_substr(c1,'[^-]+',1,3) as result from x ;
演示
SQL> with x ( c1,c2,c3 ) as
(
select '123-4567890-1234567', 'First Name' , 199 from dual union all
select '456-7890123-4567890', 'Hulkamania' , 200 from dual
)
select regexp_substr(c1,'[^-]+',1,2)||'-'||regexp_substr(c1,'[^-]+',1,3) as result from x ; 2 3 4 5 6
RESULT
--------------------------------------------------------------------------------
4567890-1234567
7890123-4567890
SQL>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.