如何从字符串中提取?

问题描述:

我如何编写一个查询,提取这样的事情:如何从字符串中提取?

如果我有:

John Snow 
Ananana Bacarara 

我想要得到的结果是:

John 
Ananana 

我尝试了很多事情substr()但仍没有得到解决方案..

+0

你希望所有的字符,直到第一个被发现?你使用哪个dbms? – jarlh

+0

所以你有一个全名字段,你想选择名字? – SaggingRufus

+0

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

结合使用SUBSTRINSTR字符串函数。

查询

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>