2016-04-25 12 views
0

私は以下のSQL文または簡単な手順を記述しようとしています。私は二つのことで分割する必要が2つの列に文字列を分割するOracle

First Name&Second Name [W] 

: 列名があります:department_name次の文字列の文字が含まれている1列に First Name&Second Namedepartment_codeと呼ばれる2番目の列にdepartment_name[W]と呼ばれます。

私はそれを何百行もする必要があります。 この場合、プロシージャまたはSQL文はどのように見えますか? DEPARTMENT_NAME内の文字列や単語の数の 長さは...

+0

department_codeが[104]と表示されている場合は、2番目の列に** [104] **(角括弧付き)または** 104 ** **を表示しますか? – mathguy

+0

私はちょうどそれが非常に便利ですThxを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

必要があります。 – m4ndy

+0

@ m4ndy答えがあなたの問題を解決した場合は、それが承認されたことを示すことができます(投票ボタンの下の緑のチェックマーク)。問題が解決していない場合は、未解決の問題があるコメントを追加したり、質問を編集したりすることができます。 – MT0