如何编写查询以提取类似的内容:
如果我有:
John Snow
Ananana Bacarara
我想得到结果:
John
Ananana
我用substr()
尝试过很多东西,但仍然没有找到解决方案..
答案 0 :(得分:0)
使用SUBSTR
和INSTR
字符串函数的组合。
<强>查询强>
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>