我如何編寫一個查詢,提取這樣的事情:如何從字符串中提取?
如果我有:
John Snow
Ananana Bacarara
我想要得到的結果是:
John
Ananana
我嘗試了很多事情substr()
但仍沒有得到解決方案..
我如何編寫一個查詢,提取這樣的事情:如何從字符串中提取?
如果我有:
John Snow
Ananana Bacarara
我想要得到的結果是:
John
Ananana
我嘗試了很多事情substr()
但仍沒有得到解決方案..
結合使用SUBSTR
和INSTR
字符串函數。
查詢
SELECT SUBSTR(name, 1, INSTR(name, ' ') - 1) as first_name
FROM your_table_name;
使用INSTR()
,以確定在列的空間索引位置,然後串起來,但不包括該空間:
SELECT SUBSTR(column, 1, INSTR(column, ' ')-1)
FROM yourTable
從你的失敗嘗試,看來你試圖佔據一半的字符串,希望你最終只能得到第一個名字。相反,使用名稱中空格的位置來分隔名和姓。
如果你習慣使用正則表達式,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>
你希望所有的字符,直到第一個被發現?你使用哪個dbms? –
jarlh
所以你有一個全名字段,你想選擇名字? – SaggingRufus
我想使它在PL/SQL中,但它基本上是一個querry ..我只需要這個想法 – zowie