2017-09-15 55 views
1

我有一個名稱格式爲「Doe,John」的表,我需要將其解析爲「Doe,J」。我已經寫了一個查詢來提取姓氏,但我不知道如何修改它以包含逗號和首字母。將名稱解析爲「姓氏,FI」的格式Oracle

SUBSTR(Table.Name,1,INSTR(Table.Name,',',1,1)) 

回答

2

使用的NVLSUBSTRINSTR一個組合。

SELECT NVL(SUBSTR("namefield", 0, INSTR("namefield", ',')+2), "namefield") AS Name 
FROM yourtable 

輸入

Doe, John 
Smith, Mark 

輸出

NAME 
Doe, J 
Smith, M 

SQL小提琴:http://sqlfiddle.com/#!4/e1f467/7/0

+0

你不應該在標識符周圍需要雙引號。它會強制區分大小寫,這會在使用不正確的情況下導致問題。 – MT0

+0

@ MT0他們的字段名稱實際上並不叫'namefield',他們可以重新命名,因爲他們認爲合適,邏輯仍然是一樣的,但是我同意沒有雙引號:) – Matt

+0

@Matt工程! NVL()是否必要? –

1

這個怎麼樣 -

SELECT SUBSTR(Table.Name,1,INSTR(Table.Name,',',1)+2) 
0

的REGEXP_REPLACE版本,只要有該串中只有一個空間按您的示例性數據:

select regexp_replace('Doe, John', '(.* .).*', '\1') 

的\ 1指的是在括號中的字符串,它是所有的字符串的匹配部分直到包括最後一個空格和後面的字符,忽略其餘部分。

相關問題