2016-04-25 163 views
0

我正在嘗試爲以下代碼編寫SQL語句或簡單的過程。 有列名:department_name包含以下字符串的字符:將字符串拆分爲2列Oracle

First Name&Second Name [W] 

我需要拆分兩件事情: 在一列在第二列名爲department_name[W]First Name&Second Name稱爲department_code

我需要做幾百行。 在這種情況下,過程或sql語句將如何顯示? 長度字符串和部門名稱不同的字數的..

+0

如果department_code顯示爲[104],您希望第二列顯示** [104] **(帶方括號)還是僅顯示** 104 **? – mathguy

+0

我只需要104 – m4ndy

回答

0
SELECT TRIM(SUBSTR(department_name, 1, INSTR(department_name, '[') - 1)) 
     AS department_name, 
     SUBSTR(department_name, INSTR(department_name, '[')) 
     AS department_code 
FROM your_table; 

SELECT REGEXP_SUBSTR(department_name, '(.*?)\s*(\[.*?\])', 1, 1, NULL, 1) 
     AS department_name, 
     REGEXP_SUBSTR(department_name, '(.*?)\s*(\[.*?\])', 1, 1, NULL, 2) 
     AS department_code 
FROM your_table; 

,或者,如果你不想在部門代碼,然後括號:

SELECT REGEXP_SUBSTR(department_name, '(.*?)\s*\[(.*?)\]', 1, 1, NULL, 1) 
     AS department_name, 
     REGEXP_SUBSTR(department_name, '(.*?)\s*\[(.*?)\]', 1, 1, NULL, 2) 
     AS department_code 
FROM your_table; 
+0

Thx它非常有用。 – m4ndy

+0

@ m4ndy如果答案已經解決了您的問題,那麼您可以將其標記爲已接受(表決按鈕下方的綠色複選標記),表示該問題已關閉。如果它還沒有解決你的問題,那麼你可以添加評論與懸而未決的問題和/或編輯你的問題。 – MT0