我在資料庫中有一個表,其中一列的格式為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
uj5u.com熱心網友回復:
正如請求評論中所述,當您對其部分感興趣時,您不應存盤組合數字。而是將零件存盤在單獨的列中。
但是,由于格式是固定的 'AAA-BBBBBBB-CCCCCC',所以很容易得到你感興趣的子字串。只需從第五個位置取字串:
select substr(col, 5) from mytable;
uj5u.com熱心網友回復:
您可以選擇從第 4 個字符開始的列的右側部分
SELECT RIGHT(Id, LEN(Id)-4) AS TrimmedId;
uj5u.com熱心網友回復:
另一種選擇使用 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>
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/322834.html
上一篇:如何獲得正確的日期格式?
