我目前正在MySql中编写一个函数,该函数要求我能够执行以下操作:
SET argNumber = 2;
SELECT x.x_id
FROM x, piv
WHERE x.x_id = concat('piv.x', argNumber)
LIMIT 1;
如您在上面看到的,我正在尝试连接“ piv.x”和argNumber的变量值来创建piv.x2,它是表piv中的一列。我遇到的问题是,在使用concat函数之后,该过程将结果字符串视为数据而不是引用。我怎样才能解决这个问题?
最佳答案
它应该是(假设piv.x
是varchar
列,否则您需要先将其转换为正确的类型)
concat(piv.x, '2')
您的查询应该看起来像
SELECT x.x_id
FROM x JOIN piv
ON x.x_id = concat( CAST(piv.x AS VARCHAR), argNumber)
LIMIT 1;
根据您的评论,您似乎需要动态查询。然后像下面这样
SET @sql =CONCAT("SELECT x.x_id FROM x JOIN piv ON x.x_id = piv.x", argNumber, " LIMIT 1");
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;