从Oracle中的full_name中提取first_name和last_name

时间:2015-03-25 14:30:23

标签: oracle

  1. 如果输入以逗号分隔,则将第一部分存储在LAST_NAME中,将第二部分存储在FIRST_NAME中。
  2. 如果逗号不存在,则将名称存储在LAST_NAME
  3. 你能帮助我实现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
    

1 个答案:

答案 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>