You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL中CASE语句搭配LIKE匹配user_agent生成新列问题求助

问题原因
  • 混用了CASE语句的两种语法:
    MySQL支持两种CASE用法,你当前写的是仅支持等值匹配的「简单CASE表达式」,这种写法要求WHEN后只能跟固定的匹配值,不能接LIKE这类模糊匹配运算符。要实现LIKE判断需要使用支持自定义条件的「搜索CASE表达式」,CASE关键字后不需要跟user_agent字段,每个WHEN子句单独写完整的判断逻辑。
  • 带空格的别名未转义:你自定义的列别名Operating System包含空格,属于MySQL中的特殊标识符,必须用反引号包裹才能正常解析,否则会触发语法报错。
修正后的SQL语句
SELECT user_id,
    CASE
    WHEN user_agent LIKE '%windows%' THEN 'Windows'
    WHEN user_agent LIKE '%OS X%' THEN 'Mac'
    ELSE 'Other'
    END AS `Operating System`
FROM pageviews;
可选优化

如果需要兼容user_agent中的大小写差异(比如出现WINDOWS、os x这类大小写混写的内容),可以统一转成小写后再判断,避免匹配遗漏:

SELECT user_id,
    CASE
    WHEN LOWER(user_agent) LIKE '%windows%' THEN 'Windows'
    WHEN LOWER(user_agent) LIKE '%os x%' THEN 'Mac'
    ELSE 'Other'
    END AS `Operating System`
FROM pageviews;

内容的提问来源于stack exchange,提问作者user2415706

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 13:27:03