如何从字符串中提取?

时间:2017-02-27 15:27:09

标签: sql oracle

如何编写查询以提取类似的内容:

如果我有:

John Snow
Ananana Bacarara

我想得到结果:

John
Ananana

我用substr()尝试过很多东西,但仍然没有找到解决方案..

3 个答案:

答案 0 :(得分:0)

使用SUBSTRINSTR字符串函数的组合。

<强>查询

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

答案 1 :(得分:0)

使用INSTR()标识列中空格的索引位置,然后子字符串最多但不包括该空格:

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

从你失败的尝试中,你似乎试图占用一半的字符串,希望你最终只得到第一个名字。而是使用名称中空格的位置来分隔名字和姓氏。

答案 2 :(得分: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>