2014-10-08 33 views
-2

我有4列的表。如何劃分記錄並顯示它的具體部分

user_id, user_name, password, full_name 
706 , 29682 , 29682 , Nikolay Valeriev Rusanov 
707 , 30211 , 30211 , Valentin Ognyanov Karamanchev 

當我做出選擇,我需要從列FULL_NAME只顯示姓氏。

查詢應該返回

user_id, user_name, password, full_name 
706 , 29682 , 29682 , Rusanov 
707 , 30211 , 30211 , Karamanchev 

他們用 「空格」 分開。 我無法使用substr,因爲列中的每條記錄都有不同的長度,我有超過10 000行。

你可以給我一些SQL查詢如何做到這一點?

+0

@Filburt告訴我是就是答案... – 2014-10-08 09:00:21

回答

0

使用簡單的SUBSTRINSTR

SQL> WITH DATA AS(
    2 SELECT 'Nikolay Valeriev Rusanov' full_name FROM dual UNION ALL 
    3 SELECT 'Valentin Ognyanov Karamanchev' FROM dual UNION ALL 
    4 SELECT 'no reason' FROM dual) 
    5 SELECT SUBSTR(full_name,instr(full_name,' ',-1)+1) last_name 
    6 FROM DATA 
    7/

LAST_NAME 
----------------------------- 
Rusanov 
Karamanchev 
reason 

SQL> 

2. 使用REGULAR EXPRESSION

SQL> WITH DATA AS(
    2 SELECT 'Nikolay Valeriev Rusanov' full_name FROM dual UNION ALL 
    3 SELECT 'Valentin Ognyanov Karamanchev' FROM dual UNION ALL 
    4 SELECT 'no reason' FROM dual) 
    5 SELECT regexp_substr (full_name, '\w*$') last_name 
    6 FROM DATA 
    7/

LAST_NAME 
----------------------------- 
Rusanov 
Karamanchev 
reason 

SQL> 
+0

非常感謝,完美的答案!非常感謝! – 2014-10-08 11:04:58

+0

您可以將其標記爲已回答。 – 2014-10-08 11:07:35