从SQL Oracle中的字符串中获取第二个单词

时间:2016-12-09 00:19:25

标签: sql string oracle substr

我需要在列中获取每个名称的第二个单词,我对substr和instr进行了研究,但我认为我有一个逻辑错误,我根本无法指出它。

select substr(vendor_name,instr(vendor_name, ' ')+1) from vendors ORDER BY vendor_id asc;

Here is my current output, the code works, but it does not do what I want it to do.

1 个答案:

答案 0 :(得分:1)

尝试此查询:

SELECT SUBSTR(vendor_name,
              INSTR(vendor_name, ' ', 1, 1) + 1,
              INSTR(vendor_name, ' ', 1, 2) - INSTR(vendor_name, ' ', 1, 1) - 1)
FROM vendors
ORDER BY vendor_id

要查看其工作原理,请举例vendor_name Boeing Corporation Inc.示例:

INSTR(vendor_name, ' ', 1, 1) = 7  = first occurrence of space
INSTR(vendor_name, ' ', 1, 2) = 19 = second occurrence of space

现在我们正在调用substring:

SELECT SUBSTR('Boeing Corporation Inc.',
              7 + 1,
              19 - 7 - 1)

相同
SELECT SUBSTR('Boeing Corporation Inc.', 8, 11) = 'Corporation'

请注意,我的回答是假设vendor_name(以及第一个空格)中存在第二个空格。如果您希望此列中包含复杂数据,则可能需要使用正则表达式。