在MySQL中将列名称作为参数传递

时间:2016-03-08 23:01:50

标签: mysql database

是否可以做这样的事情:

impl_getUrl()

所以我想知道给定的ID是否在列中。 如果没有,我怎么能用MySQL解决这个问题?

2 个答案:

答案 0 :(得分:3)

至于在MySQL中传递列名作为参数(标题中的问题),这在SQL语句中是不可能的。 SQL语句中的标识符(例如表名和列名)必须是SQL文本的一部分。那些不能通过绑定占位符传递。

IN比较运算符需要包含在parens中的值列表,或者包含在返回一组值的parens中的SELECT查询。

目前尚不清楚你的目的是什么。

我怀疑template_allowed_parent_templates是表中的一列,它包含逗号分隔的值列表。 (颤动)。

我怀疑您可能正在寻找MySQL FIND_IN_SET 字符串函数,该函数将“搜索”逗号分隔列表中的特定值。

作为一个简单的演示:

  SELECT FIND_IN_SET('5', '2,3,5,7')
       , FIND_IN_SET('4', '2,3,5,7')

当指定值为“found”时,该函数返回一个正整数。您可以在谓词中使用该函数,例如

WHERE FIND_IN_SET(id,template_allowed_parent_templates)

WHERE FIND_IN_SET( ? ,template_allowed_parent_templates)

(这是有效的,因为在MySQL中,正整数在布尔上下文中被计算为TRUE。)

我只是猜测你想要完成什么。

答案 1 :(得分:0)

你能澄清一下你想做什么吗?

从查询中,您似乎希望从模板中获取所有template_id,其中某些值位于集合template_allowed_pa​​rent_templates中。传递列名作为参数的位置在哪里?