将字符串与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中的字段值连接[重复]的主要内容,如果未能解决你的问题,请参考以下文章