我正在尝试从数据库中的user_agent
个字段中过滤google-bots。我正在使用LIKE %text_I_want_to_check_%
,它可以正常工作,因为到目前为止,所有漫游器命名都是唯一的,但是AdsBot-Google
在字符串中不是唯一的,与其他user_agents
的不同之处在于{{ 1}}是字符串中的第一项。
使用Google-bot的AdsBot-Google
示例:
user_agent
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)
,唯一的区别是第二个示例在字符串的第一个单词中包含它。
我想要的输出:
SQL CASE检查AdsBot-Google
是否是字符串中的第一文本,并且不干扰AdsBot-Google
在字符串中间的其他情况。像这样:
AdsBot-Google
答案 0 :(得分:3)
SQL LIKE
运算符实际上可以检查以字符串开头的内容:
SELECT *
FROM sessions
WHERE user_agent LIKE 'AdsBot-Google%';
请注意,这只会匹配用户代理字段以AdsBot-Google
开头的记录;它与其他任何地方发生的AdsBot-Google
都不匹配。