gpt4 book ai didi

mysql - 从列中的每一行中提取第二个单词

转载 作者:太空宇宙 更新时间:2023-11-03 11:29:42 25 4
gpt4 key购买 nike

我的数据库中有一个正在试验的 vendors 表,如下所示 enter image description here

当我运行下面的sql命令时

SELECT vendor_name
FROM vendors
ORDER BY vendor_name
LIMIT 10

我得到下面的输出 enter image description here

我的问题是我试图从每个 vendor_name 中提取第二个词,当第二个词不存在时,它应该返回一个空白单元格。

下面是我为此编写的 sql 查询

SELECT vendor_name,
SUBSTRING(
SUBSTRING( vendor_name, LOCATE(' ', vendor_name) + 1),
1,
LOCATE( ' ', SUBSTRING( vendor_name, LOCATE(' ', vendor_name) + 1) ) - 1
) AS second_word
FROM vendors
ORDER BY vendor_name
LIMIT 10

这是该 sql 查询的输出 enter image description here

如果您从上面的输出中注意到,当 vendor_name 中的单词超过两个时,它会返回第二个单词,而当 vendor_name 包含一个单词时它按预期返回空白单元格。

vendor_name 恰好包含两个单词时,问题就来了,而不是返回第二个单词,而是返回一个空白单元格,例如 American ExpressAScflags

我怎样才能更好地改进我的查询,以便即使 vendor_name 确实包含两个单词,它也确实返回第二个单词而不是空白单元格?

谢谢。

最佳答案

那是因为第二个单词后没有空格,如果文本到此结束,locate() 就找不到空格了。

快速破解:在末尾添加一个空格。

 LOCATE( ' ', CONCAT(SUBSTRING( vendor_name, LOCATE(' ', vendor_name) + 1), ' ') ) - 1

关于mysql - 从列中的每一行中提取第二个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51023838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com