MySQL:如何在 MySQL 查询中传递列名作为参数

标签 mysql parameters names workbench

显示所有包含“a”的城市:

SELECT * FROM user WHERE city LIKE '%a%';  -- works fine

正确的语法是什么:

SET @param = 'city';
SELECT * FROM user WHERE @param LIKE '%a%'; -- NOT yielding any rows

在 MySQL Workbench 查询中测试

最佳答案

正确的语法如下:

SET @param = 'city';
SET @statement = CONCAT('SELECT * FROM user WHERE ', @param, ' LIKE ', '"%a%"');
PREPARE myquery FROM @statement;
EXECUTE myquery;
DEALLOCATE PREPARE myquery

注意事项:

  1. 在必要时在第 2 行的 CONCAT 参数中添加空格,因为 CONCAT 不会为您添加空格,例如你(还有 MySQL)会更喜欢:

... user WHERE city LIKE '%a%';

而不是:

... userWHEREcityLIKE'%a%'

  1. 添加额外的和不同的引号:

'%a%' should become '"%a%"'

  • 最后取消分配 - 您声明了默认情况下有效的全局变量“myquery”,直到 session 重置为止 - 可能会导致冲突和错误

  • 提示要查看 CONCAT() 的结果,请使用

  • SELECT @statement

    关于MySQL:如何在 MySQL 查询中传递列名作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44529593/

    相关文章:

    mysql - 如何插入长文本(例如 :Html) from a variable into MySQL using linux bash?

    php - php 中的 MYSQL 语法错误,但 sql 有效

    mysql - 由于内连接,mysql 记录显示两次

    重命名嵌套列表 R

    在 R 中按名称引用列范围

    php - 如何检查字符串是否可以用作 PHP 中的变量名?

    php - 全局 $wpdb 显示垃圾数据以及我的选择查询的结果

    ios - 以编程方式执行 Segue 并将参数传递给目标 View

    java - Android:参数不通过 if-else 语句?

    javascript - javascript中函数参数的复杂使用