2017-02-27 106 views
-3

我如何編寫一個查詢,提取這樣的事情:如何從字符串中提取?

如果我有:

John Snow 
Ananana Bacarara 

我想要得到的結果是:

John 
Ananana 

我嘗試了很多事情substr()但仍沒有得到解決方案..

+0

你希望所有的字符,直到第一個被發現?你使用哪個dbms? – jarlh

+0

所以你有一個全名字段,你想選擇名字? – SaggingRufus

+0

我想使它在PL/SQL中,但它基本上是一個querry ..我只需要這個想法 – zowie

回答

0

結合使用SUBSTRINSTR字符串函數。

查詢

SELECT SUBSTR(name, 1, INSTR(name, ' ') - 1) as first_name 
FROM your_table_name; 
0

使用INSTR(),以確定在列的空間索引位置,然後串起來,但不包括該空間:

SELECT SUBSTR(column, 1, INSTR(column, ' ')-1) 
FROM yourTable 

從你的失敗嘗試,看來你試圖佔據一半的字符串,希望你最終只能得到第一個名字。相反,使用名稱中空格的位置來分隔名和姓。

0

如果你習慣使用正則表達式,REGEXEXP_SUBSTR也會做你所要求的:

1* select regexp_substr('&parm','\w*') from dual 
Enter value for parm: John Snow 
old:select regexp_substr('&parm','\w*') from dual 
new:select regexp_substr('John Snow','\w*') from dual 

REGE 
---- 
John 

SQL>/
Enter value for parm: Ananana Bacarara 
old:select regexp_substr('&parm','\w*') from dual 
new:select regexp_substr('Ananana Bacarara','\w*') from dual 

REGEXP_ 
------- 
Ananana 

SQL>