【问题标题】:Concatenate string with field value in MySQL [duplicate]将字符串与MySQL中的字段值连接[重复]
【发布时间】: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 中执行此操作,或者我在这里跳过了枪?

【问题讨论】:

    标签: php mysql sql concatenation


    【解决方案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://stackoverflow.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)
      

      【讨论】:

        猜你喜欢
        • 2018-12-17
        • 2018-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-29
        • 2023-04-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多