2015-03-02 44 views
1

我有一個person表,其中name列包含名稱,其中一些格式爲「首位」,一些格式爲「首位」。分開單列第一個和最後一個名字

我查詢

SELECT name, 
SUBSTRING(name FROM 1 FOR POSITION(' ' IN name)) AS first_name 
FROM person 

創建名字的新行,但它並不適用於它只有一個名字,沒有空格的所有名稱的工作。

我知道我需要一個CASE聲明,像0 = (' ', name),但我一直在遇到語法錯誤,並會欣賞一些指針。

回答

0

1.

select 
substring(name from '^([\w\-]+)') first_name, 
substring(name from '\s(\w+)$') last_name 
from person 

2.

select (regexp_split_to_array(name, ' '))[1] first_name 
    , (regexp_split_to_array(name, ' '))[2] last_name 
from person 
相關問題