[英]MySQL: How to pass a column name as parameter in MySQL query
Shows all cities containing "a" : 显示所有包含“ a”的城市:
SELECT * FROM user WHERE city LIKE '%a%'; -- works fine
What is the correct syntax : 正确的语法是什么:
SET @param = 'city';
SELECT * FROM user WHERE @param LIKE '%a%'; -- NOT yielding any rows
Tested in MySQL Workbench query 在MySQL Workbench查询中测试
The correct syntax goes like this: 正确的语法如下所示:
SET @param = 'city';
SET @statement = CONCAT('SELECT * FROM user WHERE ', @param, ' LIKE ', '"%a%"');
PREPARE myquery FROM @statement;
EXECUTE myquery;
DEALLOCATE PREPARE myquery
Things to keep in mind: 注意事项:
... user WHERE city LIKE '%a%'; ...用户所在城市,如'%a%';
rather than : 而不是 :
... userWHEREcityLIKE'%a%' ... userWHEREcityLIKE'%a%'
'%a%' should become '"%a%"' '%a%'应该变成'“%a%”'
DEALLOCATE in the end - you declared a global var 'myquery' valid by default till the session reset - may cause collisions and errors 最终进行DEALLOCATE-在默认情况下,声明全局变量'myquery'有效,直到会话重置为止-可能导致冲突和错误
Tip To see the result of CONCAT(), use 提示要查看CONCAT()的结果,请使用
SELECT @statement SELECT @语句
you can use 您可以使用
select id,date,@statement as any_name from table_name ;
SET @statement = (SELECT To_days( date_f ) - TO_DAYS( date ) FROM `table_name `);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.