代码之家  ›  专栏  ›  技术社区  ›  user213154

在MySQL的“in()”中使用逗号分隔的字符串

  •  2
  • user213154  · 技术社区  · 15 年前

    如果用户定义的变量 @x 是一个逗号分隔的数字字符串,例如。 '1,2,4' ,是否有方法在 IN () 功能?

    明确地:

    SET @x := '1,2,4';
    SELECT * FROM t WHERE c IN (@x);
    

    不选择t中c等于1、2或4的行。

    2 回复  |  直到 12 年前
        1
  •  3
  •   Donnie    15 年前

    不能直接使用变量执行此操作。根据您现在的情况,服务器正在尝试执行 select * form t where c in ('1,2,3'); ... 这显然不是您想要的,因为您正在检查c是否包含给定的单个字符串。

    您必须根据列表生成动态SQL,才能使其正常工作。