MySQL使用变量LIKE'%Variable_Name%'在触发器中

时间:2014-05-25 21:30:26

标签: mysql triggers

我有这个简单的触发器..

BEGIN

    DECLARE FILE_NAME VARCHAR(250);
    DECLARE FILE_REFR VARCHAR(500);


SET FILE_NAME = 'Foo';
SET FILE_REFR = 'Bar';

--- I'd like to execute the next statement, using variable FILE_REFR between %% in a LIKE clause:
SELECT COUNT(*) INTO @num_rows FROM referers WHERE filename = FILE_NAME AND ref NOT LIKE "%FILE_REFR%";

...
...
...

END

不幸的是,变量名称没有作为变量被选中..但作为CHAR,我知道那里缺少一些东西。

帮助不仅仅是赞赏.. :)

2 个答案:

答案 0 :(得分:2)

将变量用作:

CONCAT('%', FILE_REFR, '%');

所以完整的选择查询是:

SELECT COUNT(*) INTO @num_rows FROM referers WHERE filename = FILE_NAME AND ref NOT LIKE  CONCAT('%', FILE_REFR, '%');

由于

答案 1 :(得分:1)

这是你想要的吗?

SELECT COUNT(*) INTO @num_rows
FROM referers
WHERE filename = FILE_NAME AND
      ref NOT LIKE CONCAT('%', FILE_REFR, '%');

MySQL在字符串文字中找不到变量。相反,您必须使用CONCAT()将模式拼凑在一起。