在MySQL中使用子字符串从字符串中筛选特定单词

在MySQL中使用子字符串从字符串中筛选特定单词,mysql,string,substring,Mysql,String,Substring,下面的语句将产生超过供应商名称中第一个单词的所有内容。我需要它在使用子字符串时只产生vendor_name中的第二个单词。如果为NULL,我还需要它返回一个空白字段。这可能吗 select substring_index(vendor_name, ' ',-2) as 'Second Word' from vendors; 编辑:我认为这需要遵循以下思路,但我无法让它发挥作用: 子字符串索引(子字符串索引(供应商名称“”,-2)供应商名称“”,1)为 “第二个单词”如果你只想要第二个单词,我会

下面的语句将产生超过供应商名称中第一个单词的所有内容。我需要它在使用子字符串时只产生vendor_name中的第二个单词。如果为NULL,我还需要它返回一个空白字段。这可能吗

select substring_index(vendor_name, ' ',-2) as 'Second Word'
from vendors;
编辑:我认为这需要遵循以下思路,但我无法让它发挥作用: 子字符串索引(子字符串索引(供应商名称“”,-2)供应商名称“”,1)为
“第二个单词”

如果你只想要第二个单词,我会得到前两个单词,然后从结果中选择最后一个单词。处理可能有四个或更多单词的情况

mysql> select substring_index('one two three four', ' ', 2) as s;
+---------+
| s       |
+---------+
| one two |
+---------+

mysql> select substring_index(substring_index('one two three four', ' ', 2), ' ', -1) as s;
+-----+
| s   |
+-----+
| two |
+-----+
试试这个:

select 
case
when instr(vendor_name,' ') = 0 then ' '    //This will show blank for null.
else substring_index(substring_index(vendor_name,' ',2),' ',-1)
end as second_name
from t;
它也将为null显示空白


希望有帮助

至少我在正确的轨道上!谢谢,这就是我想要的答案:)另外,是否需要添加任何内容以确保它返回空项?@charlescarington检查我的答案。@charlescarington使用
COALESCE(…子字符串表达式…,“”)