将字符串与MySQL中的字段值连接[重复]

Posted

技术标签:

【中文标题】将字符串与MySQL中的字段值连接[重复]【英文标题】:Concatenate string with field value in MySQL [duplicate] 【发布时间】:2013-10-16 04:56:24 【问题描述】:

我需要在 mysql 查询中将字符串与字段值连接起来,以便 LEFT JOIN 两个表。

表一有一个名为“category_id”的列,其中包含数值,例如 61、78、94 等。

表二有一个名为“query”的列,指的是请求路由机制,它的值有“product_id=68”、“category_id=74”、“manufacturer_id=99”等。

因此,在我的查询中,当从设置字符串派生的连接字符串且“category_id”列的值与查询字段匹配时,我需要加入表。

我的 SQL 语句目前是:

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

我尝试过使用 ||运算符而不是 + 运算符,但仍然没有运气。是否可以在 MySQL 中执行此操作,或者我在这里跳过了枪?

【问题讨论】:

【参考方案1】:

您是否尝试过使用concat() 函数?

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

【讨论】:

完美!我曾尝试使用CONCAT_WS('=', 'category_id', tableOne.category_id),但似乎这完全是错误的功能!非常感谢! 这很好。但是我怎样才能在字段的两侧连接。喜欢在 menuid 的两边添加引号,例如:“menuid1”。? 由于 concat() 接受任意数量的参数 (dev.mysql.com/doc/refman/5.1/en/…),您应该能够 concat('"',table.column,'"');【参考方案2】:
SELECT ..., CONCAT( 'category_id=', tableOne.category_id) as query2  FROM tableOne 
LEFT JOIN tableTwo
ON tableTwo.query = query2

【讨论】:

感谢您的回答,这是一个优雅的解决方案!【参考方案3】:

这是一个很好的答案:

SET sql_mode='PIPES_AS_CONCAT';

在此处了解更多信息:https://***.com/a/24777235/4120319

这是完整的 SQL:

SET sql_mode='PIPES_AS_CONCAT';

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

【讨论】:

【参考方案4】:

MySQL 使用CONCAT() 连接字符串

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

【讨论】:

以上是关于将字符串与MySQL中的字段值连接[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将字符串添加到 MySQL 中的字段值?

MySQL查询从字段中删除重复值[重复]

21.MySQL中的聚合函数

在 Pandas 中取消聚合字符串值字段 [重复]

MySQL查询将分隔字符串值拆分为单独的列[重复]

MySQL 将 DATE 字符串与 DATETIME 字段中的字符串进行比较