SQL创建产品分类列问题求助:排查CASE语句执行异常
修正后的SQL语句及问题解析
你的SQL语句存在语法和逻辑错误,以下是具体修正方案:
问题点梳理
- CASE表达式位置错误:CASE子句属于SELECT字段列表的一部分,不能放在FROM子句之后。
- 条件逻辑漏洞:最后一个WHEN的OR条件写法错误,每个分支都需要单独写
name LIKE,否则'%vest%'这类字符串会被判定为布尔值真,导致所有后续条件失效。 - 符号格式错误:
apparel结尾的单引号是中文全角符号,必须替换为英文半角单引号;别名的中文双引号也建议换成英文符号以适配SQL语法规范。
修正后的SQL代码
SELECT price, productid, Products.Name, CASE WHEN Name LIKE '%frame%' THEN 'frame' WHEN Name LIKE '%mountain-%' THEN 'mountain' WHEN Name LIKE '%road-%' THEN 'road' WHEN Name LIKE '%touring-%' THEN 'touring' WHEN name LIKE '%socks%' OR name LIKE '%vest%' OR name LIKE '%jersey%' OR name LIKE '%gloves%' OR name LIKE '%shorts%' OR name LIKE '%tights%' THEN 'apparel' ELSE 'equipment' END AS "Category" FROM Products;
额外适配说明
如果使用MySQL数据库,别名可以改用反引号包裹(如END AS Category``);如果是PostgreSQL或SQL Server,使用英文双引号或直接写无空格的别名即可。
内容的提问来源于stack exchange,提问作者Sarah Brown
相关产品推荐
相关产品推荐

