【问题标题】:MySQL concatenation operatorMySQL 连接运算符
【发布时间】:2013-03-15 21:33:27
【问题描述】:

我不知道 MySQL 的连接运算符。

我已尝试使用此代码进行连接:

SELECT vend_name || ' (' || vend_country || ')'
FROM Vendors
ORDER BY vend_name;

但它没有用。我应该使用哪个运算符来连接字符串?

【问题讨论】:

  • 今天我意识到像 "SELECT 'hello ' 'world' AS col1, ' from ' 'Mysql' AS col2 ....也有效
  • @DiegoAndrésDíazEspinoza:那是“相邻字符串文字的连接”,不是吗?也就是说,它在您连接两个字符串文字时起作用(可能是因为它们太长而不能放在一行上)。如果您尝试将列与字符串文字连接起来,它是否也有效,就像问题中一样?我希望答案是“不”。
  • @JonathanLeffler 是的,它是字符串文字的相邻连接,这就是为什么它只是一个评论,而不是一个答案。注意下面的答案是不可能的相邻串联,只有在使用 CONCAT 时才有可能。

标签: mysql sql concatenation


【解决方案1】:

|| 是 ANSI 标准字符串连接运算符,大多数数据库都支持(尤其是 not MS SQL Server)。 MySQL 也支持它,但你必须先SET sql_mode='PIPES_AS_CONCAT';SET sql_mode='ANSI';

【讨论】:

    【解决方案2】:

    使用concat 的好处是您可以传递不同的数据类型列和连接字符串表示

     SELECT concat('XXX',  10.99, 'YYY', 3, 'ZZZ', now(3)) as a; 
    

    输出

    一个
    -----
    XXX10.99Y​​YY3ZZZ2018-09-21 15:20:25.106

    【讨论】:

    • 对此表示歉意。我收回我的评论。是的,“这个答案很有用”
    【解决方案3】:

    您只需使用CONCAT 关键字来连接字符串.. 你可以像这样使用它

    SELECT CONCAT(vend_name,'',vend_country) FROM vendors ORER BY name;
    

    【讨论】:

    • 中间加个空字符串有什么用?
    • 添加一个空字符串(无)如何改善甚至改变结果?我错过了一些东西......
    【解决方案4】:

    在使用管道作为连接运算符运行查询之前,每次都必须将管道设置为连接。

    【讨论】:

      【解决方案5】:

      MySQL CONCAT 函数用于连接两个字符串以形成单个字符串。试试下面的例子:

      mysql> SELECT CONCAT('FIRST ', 'SECOND');
      +----------------------------+
      | CONCAT('FIRST ', 'SECOND') |
      +----------------------------+
      | FIRST SECOND               |
      +----------------------------+
      1 row in set (0.00 sec)
      

      要更详细地了解 CONCAT 函数,请考虑一个包含以下记录的 employee_tbl 表:

      mysql> SELECT CONCAT(id, name, work_date)
          -> FROM employee_tbl;
      +-----------------------------+
      | CONCAT(id, name, work_date) |
      +-----------------------------+
      | 1John2007-01-24             |
      | 2Ram2007-05-27              |
      | 3Jack2007-05-06             |
      | 3Jack2007-04-06             |
      | 4Jill2007-04-06             |
      | 5Zara2007-06-06             |
      | 5Zara2007-02-06             |
      +-----------------------------+
      

      【讨论】:

      • mysql是否没有任何操作符
      【解决方案6】:

      您使用的是 ORACLE 类型的连接。 MySQL 的应该是

       SELECT CONCAT(vend_name, '(', vend_country, ')')
      

      调用CONCAT() 函数并用逗号分隔您的值。

      【讨论】:

        猜你喜欢
        • 2011-11-04
        • 1970-01-01
        • 2017-03-29
        • 2011-12-04
        • 2012-01-20
        • 2011-01-03
        • 2010-09-24
        • 2014-10-12
        • 2014-02-27
        相关资源
        最近更新 更多