我有一個表列 MARKSHEET_ID,其值如下:
2020/2021_A22_3_1_10_ACP302_0082
2020/2021_A22_3_1_10_ACR301_01
2020/2021_A22_3_1_10_ACR302_01
我想選擇不同值的計數,直到第五次出現下劃線之前的字符。
在我的示例中,我想將2020/2021_A22_3_1_10的計數設為 1
uj5u.com熱心網友回復:
我們可以REGEXP_REPLACE在這里使用作為一種選擇:
SELECT REGEXP_REPLACE(MARKSHEET_ID, '_[^_] _[^_] $', '') AS NEW_MARKSHEET_ID
FROM yourTable;
uj5u.com熱心網友回復:
正如您所說:將不同的值計數到第 5 個下劃線:
SQL> with test (col) as
2 (select '2020/2021_A22_3_1_10_ACP302_0082' from dual union all
3 select '2020/2021_A22_3_1_10_ACR301_01' from dual union all
4 select '2020/2021_A22_3_1_10_ACR302_01' from dual
5 )
6 select count(distinct(substr(col, 1, instr(col, '_', 1, 5)))) cnt
7 from test; ^ ^ ^
| | |
CNT position underline 5th
----------
1
SQL>
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/316295.html
上一篇:SQL-分組的子組中的期間范圍
