我需要在列中获取每个名称的第二个单词,我对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.
答案 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
(以及第一个空格)中存在第二个空格。如果您希望此列中包含复杂数据,则可能需要使用正则表达式。