在MySQL中将字符串与字段值连接起来

57

我需要在MySQL查询中将一个字符串与字段值连接起来,以便左连接两个表。表一有一个名为"category_id"的列,其中包含数字值,例如61、78、94等。表二有一个名为"query"的列,它是请求路由机制的参考,并具有诸如"product_id=68"、"category_id=74"、"manufacturer_id=99"等值。因此,在我的查询中,每当从一组字符串和"category_id"列的值派生出连接字符串与查询字段匹配时,我都需要连接这些表。

我的MySQL语句目前为:

SELECT * FROM tableOne 
LEFT JOIN tableTwo
ON tableTwo.query = 'category_id=' + tableOne.category_id

我尝试使用 || 运算符代替 + 运算符,但还是没有成功。在 MySQL 中是否有可能实现这一点,或者我过于心急了?

4个回答

103

你尝试过使用concat()函数吗?

ON tableTwo.query = concat('category_id=',tableOne.category_id)

太好了!我曾尝试使用CONCAT_WS('=', 'category_id', tableOne.category_id),但似乎完全是错误的函数!非常感谢! - Ben
这很好。但是我如何在字段的两侧连接,例如在menuid的两侧添加引号:"menuid1"? - ShivarajRH

10
SELECT ..., CONCAT( 'category_id=', tableOne.category_id) as query2  FROM tableOne 
LEFT JOIN tableTwo
ON tableTwo.query = query2

谢谢您的回答,这是一个优雅的解决方案! - Ben

9

以下是一个很好的答案:

SET sql_mode='PIPES_AS_CONCAT';

在这里找到更多信息:https://dev59.com/SGUo5IYBdhLWcg3w9jZ4#24777235

这是完整的SQL:

SET sql_mode='PIPES_AS_CONCAT';

SELECT * FROM tableOne 
LEFT JOIN tableTwo
ON tableTwo.query = 'category_id=' || tableOne.category_id;

3

MySQL使用CONCAT()函数来连接字符串

SELECT * FROM tableOne 
LEFT JOIN tableTwo
ON tableTwo.query = CONCAT('category_id=', tableOne.category_id)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接