我有这个简单的触发器..
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,我知道那里缺少一些东西。
帮助不仅仅是赞赏.. :)
答案 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()
将模式拼凑在一起。