检查字符串中的第一个单词是否满足 SQL 中的条件

Check if first word in string pleases condition in SQL

我正在尝试从数据库中的 user_agent 字段中过滤 google-bots。我正在使用 LIKE %text_I_want_to_check_% 并且它工作正常,因为到目前为止所有机器人命名都是唯一的,但是,AdsBot-Google 在字符串中不是唯一的,与其他 user_agents 的不同之处在于 AdsBot-Google 是字符串中的第一个条目。

user_agent 与 google-bot 的示例:

Mozilla/5.0 (Linux; Android 5.0; SM-G920A) AppleWebKit (KHTML, like Gecko) Chrome Mobile Safari (compatible; AdsBot-Google-Mobile; +http://www.google.com/mobile/adsbot.html)

AdsBot-Google的例子:

AdsBot-Google (+http://www.google.com/adsbot.html)

如您所见,两个示例都包含 AdsBot-Google,唯一的区别是第二个示例将它放在字符串的第一个单词中。

我想要的输出: SQL CASE 检查 AdsBot-Google 是否是字符串中的第一个文本,并且不会干扰 AdsBot-Google 位于字符串中间的其他情况。像这样:

CASE
WHEN (sessions.user_agent like AdsBot-Google) then 'AdsBot-Google-Mobile-iPhone'

SQL LIKE 运算符实际上可以检查以字符串开头的内容:

SELECT *
FROM sessions
WHERE user_agent LIKE 'AdsBot-Google%';

请注意,这只会匹配用户代理字段以 AdsBot-Google 开头的记录;它不会匹配 AdsBot-Google 出现在其他任何地方。