我有一個包含檔案名的列,我試圖在其中隔離文本的疫苗部分。我需要切斷字串的開頭直到下劃線。然后我需要洗掉包括句點在內的檔案擴展名,它可能是四個或五個字符。我有第一部分作業,但它沒有做第二部分。我錯過了什么?我應該使用 regexp 而不是我的 2nd instr 嗎?如果是這樣,如何?
這是原始值。
4212406_Meningitis.jpg
4824729_Hep-B.jpg
3612290_Hep-B.jpg
2811504_Covid-19.jpeg
621980_Covid-19.pdf
5258652_MMR.jpeg
5755663_Meningitis.png
2555841_Covid-19.PNG
2677160_MMR.jpg
2294961_MMR.jpg
SELECT original_field,
SUBSTR(original_field, INSTR(original_field, '_') 1, INSTR(original_field, '.') -1) AS current_field
FROM my_table

uj5u.com熱心網友回復:
SUBSTR具有簽名SUBSTR(value, start_position, substring_length)(而不是將第三個引數作為結束位置)。您可以使用:
SELECT original_field,
SUBSTR(original_field, start_pos, end_pos - start_pos) AS current_field
FROM (
SELECT original_field,
INSTR(original_field, '_') 1 AS start_pos,
INSTR(original_field, '.', -1) AS end_pos
FROM my_table
);
或者:
SELECT original_field,
SUBSTR(
original_field,
INSTR(original_field, '_') 1,
INSTR(original_field, '.', -1) - INSTR(original_field, '_') - 1
) AS current_field
FROM my_table;
或者,輸入更短但執行更慢:
SELECT original_field,
REGEXP_SUBSTR(original_field, '_(.*)\.', 1, 1, NULL, 1) AS current_field
FROM my_table;
其中,對于樣本資料:
CREATE TABLE my_table ( original_field ) AS
SELECT '4212406_Meningitis.jpg' FROM DUAL UNION ALL
SELECT '12345_Small_Pox.version_2.jpg' FROM DUAL;
所有輸出:
| 原始欄位 | 當前欄位 |
|---|---|
| 4212406_腦膜炎.jpg | 腦膜炎 |
| 12345_Small_Pox.version_2.jpg | Small_Pox.version_2 |
或者,如果您想要第一個.字符而不是最后一個字符,則:
SELECT original_field,
SUBSTR(original_field, start_pos, end_pos - start_pos) AS current_field
FROM (
SELECT original_field,
INSTR(original_field, '_') 1 AS start_pos,
INSTR(original_field, '.') AS end_pos
FROM my_table
);
或者:
SELECT original_field,
SUBSTR(
original_field,
INSTR(original_field, '_') 1,
INSTR(original_field, '.') - INSTR(original_field, '_') - 1
) AS current_field
FROM my_table;
或者:
SELECT original_field,
REGEXP_SUBSTR(original_field, '_(.*?)\.', 1, 1, NULL, 1) AS current_field
FROM my_table;
所有 3 個輸出:
| 原始欄位 | 當前欄位 |
|---|---|
| 4212406_腦膜炎.jpg | 腦膜炎 |
| 12345_Small_Pox.version_2.jpg | 天花 |
小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/534407.html
標籤:甲骨文子串
上一篇:使用SYSDATE自動獲取資料?
下一篇:求和視窗子句的決議函式及方法
