使用MySQL将参数与LIKE的%
运算符连接。
我的数据库上有以下查询,它可以很好地返回结果:
SELECT people.LOGIN, people.EMAIL FROM people
WHERE people.LOGIN LIKE 'o%'
ORDER BY people.LOGIN ASC
LIMIT 10;
但是我想使用存储过程调用此函数,而不是使用'o%'
,我想使用'<myvariable>%'
而我无法做到这一点。
我在我的程序中尝试了以下内容:
BEGIN
SELECT people.EMAIL FROM people
WHERE people.LOGIN LIKE CONCAT(expression, '%')
ORDER BY people.LOGIN ASC
LIMIT 10;
END
结果呢? 清空。此查询不返回任何内容。
有人有任何想法可以帮助我吗?
答案 0 :(得分:4)
实际传入的内容通常不是我们的想法。
检查参数:
试着这样做以防范上述情况:
WHERE people.LOGIN LIKE CONCAT(TRIM(IFNULL(expression, '')), '%')
答案 1 :(得分:1)
您需要使用prepared statements。
使用查询创建一个字符串,并使用预准备语句执行它。像这样的东西 -
SET @query = CONCAT('SELECT * FROM table1 WHERE column1 LIKE ''', expression, '%''');
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
答案 2 :(得分:0)
您可以使用LOCATE。例如:
WHERE LOCATE(pParamText,column1)&gt; 0