如何在 SQLite 中结合 LIKE 和 CASE WHEN?

How to combine LIKE and CASE WHEN in SQLite?

...嗨,这里是一个数据库。我正在尝试弄清楚如何在 SQLite 中将 LIKECASE 或某种等效方法一起使用。我有一个包含串联数据的 prod_names table——有时只有 1 个项目,但通常包含几个以逗号分隔的项目。对于我的新“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*',但它们都 return 没有结果或抛出语法错误。 有什么建议么?我相信一定有一个简单的解决方案。

使用扩展的大小写语法:

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

这样可以在 CASE 中使用任何表达式作为条件,包括其他列。