簡體   English   中英

SQL查詢以選擇列中值的特定部分

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM