如何从字符串中提取?
问题描述:
我如何编写一个查询,提取这样的事情:如何从字符串中提取?
如果我有:
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