例子:SET @a= ('vehicle','traffic');
select count(*) from 表 WHERE 字段 in @a
这样子写报错了,如何定义一个列表结构的常量呢?
您好,针对您的问题,您可以使用以下方法来定义一个为列表的常量:
使用括号来组成字符串列表,例如:SET @a = '(vehicle,traffic)'。
使用 CONCAT_WS 函数来拼接字符串列表,例如:SET @a = CONCAT_WS(',', 'vehicle', 'traffic')。
定义一个临时的表或视图来存储列表数据,并使用 SELECT 语句从中选择所需的值,例如:CREATE TEMPORARY TABLE tmp_list (value VARCHAR(20)); INSERT INTO tmp_list VALUES ('vehicle'),('traffic'); SET @a = (SELECT GROUP_CONCAT(value) FROM tmp_list);
无论您选择哪种方法,都需要在 SELECT 语句中使用 IN 关键字来指定需要匹配的字段,例如:
SELECT COUNT(*) FROM 表 WHERE 字段 IN (SELECT * FROM (SELECT REPLACE(REPLACE(REPLACE(@a, '[', ''), ']', ''), '''', '') AS value) AS t);
这个语句会将列表中的单引号、方括号和空格去除后,作为 SELECT 语句的结果使用。