如何在 SQLite 中结合 LIKE 和 CASE WHEN?
How to combine LIKE and CASE WHEN in SQLite?
...嗨,这里是一个数据库。我正在尝试弄清楚如何在 SQLite 中将 LIKE
与 CASE
或某种等效方法一起使用。我有一个包含串联数据的 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') > 0
和 WHEN GLOB '*CapGun*'
,但它们都 return 没有结果或抛出语法错误。
有什么建议么?我相信一定有一个简单的解决方案。
使用扩展的大小写语法:
CASE
WHEN prod_names LIKE '%CapGun%' THEN ...
ELSE ...
END
这样可以在 CASE
中使用任何表达式作为条件,包括其他列。
...嗨,这里是一个数据库。我正在尝试弄清楚如何在 SQLite 中将 LIKE
与 CASE
或某种等效方法一起使用。我有一个包含串联数据的 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') > 0
和 WHEN GLOB '*CapGun*'
,但它们都 return 没有结果或抛出语法错误。
有什么建议么?我相信一定有一个简单的解决方案。
使用扩展的大小写语法:
CASE
WHEN prod_names LIKE '%CapGun%' THEN ...
ELSE ...
END
这样可以在 CASE
中使用任何表达式作为条件,包括其他列。