你能帮助我实现oracle中的#2吗? 在我的方法中,如果没有逗号,则无法在last_name列中存储full_name。
输入:
1. FULL_NAME =" MIKE,MYERS"
2. FULL_NAME ="肯德基"
输出:
SELECT SUBSTR('FULL_NAME', 0, INSTR('1,2', ',') - 1) LAST_NAME, SUBSTR('FULL_NAME', INSTR('1,2', ',', -1) + 1) FIRST_NAME FROM DUAL **LAST_NAME** **FIRST_NAME** MIKE MYERS **LAST_NAME** **FIRST_NAME** KFC
答案 0 :(得分:2)
由于您需要两个单独的列,我认为您需要两个 CASE 语句。
例如,
SQL> WITH DATA AS
2 ( SELECT 'MIKE,MYERS' str FROM dual
3 UNION ALL
4 SELECT 'KFC' str FROM dual
5 )
6 SELECT
7 CASE
8 WHEN instr(str, ',') <> 0
9 THEN SUBSTR(str, 1, INSTR(str, ',', 1) - 1)
10 ELSE str
11 END LAST_NAME,
12 CASE
13 WHEN instr(str, ',') <> 0
14 THEN SUBSTR(str, INSTR(str, ',', 1) +1)
15 ELSE NULL
16 END FIRST_NAME
17 FROM DATA
18 /
LAST_NAME FIRST_NAME
---------- ----------
MIKE MYERS
KFC
SQL>