如何在SQLite中组合LIKE和CASE WHEN



。。。嗨,这里有一个数据库。我试图弄清楚如何在SQLite中使用LIKECASE,或者一些等效的方法。我有一个prod_names表,它包含串联的数据——偶尔只有一个项,但通常包含几个逗号分隔的项。对于我的新">Toy"列,我需要找到包含">CapGun"的每个记录。以下代码仅在">CapGun"是唯一项目时有效,而在存在多个项目时无效(例如,">BarbieDoll、CapGun、EasyBakeOven'(。

SELECT 
customer_id, 
prod_names,
CASE prod_names WHEN 'CapGun' THEN 'CG' ELSE 'not_CG' END Toy
FROM
Toys_table
ORDER BY 
Toy

我尝试过各种方法,如WHEN LIKE '%CapGun%'WHEN INSTR(prod_names,'CapGun') > 0WHEN GLOB '*CapGun*',但它们都没有返回结果或抛出语法错误。有什么建议吗?我相信一定有一个简单的解决方案。

使用扩展的大小写语法:

CASE
WHEN prod_names LIKE '%CapGun%' THEN ...
ELSE ...
END

这允许使用任何表达式作为CASE中的条件,包括其他列。

最新更新