【问题标题】:MySQL combine two columns into one columnMySQL 将两列合并为一列
【发布时间】:2014-05-09 12:13:17
【问题描述】:

我正在尝试找到一种方法将两列合并为一列,但在列中不断获取值“0”而不是单词的组合。

这些是我和其他人都尝试过的:

SELECT column1 + column2 AS column3
FROM table;

SELECT column1 || column2 AS column3
FROM table;

SELECT column1 + ' ' + column2 AS column3
FROM table;

有人可以告诉我我做错了什么吗?

【问题讨论】:

标签: mysql sql


【解决方案1】:

我的猜测是您正在使用 MySQL,其中 + 运算符执行加法,以及将值静默转换为数字。如果值不以数字开头,则转换后的值为0

所以试试这个:

select concat(column1, column2)

添加空格的两种方式:

select concat(column1, ' ', column2)
select concat_ws(' ', column1, column2)

【讨论】:

  • 我正在使用sql server 2005,它给了我Incorrect syntax near ')'.的错误
  • @coder 。 . .这个问题被标记为“mysql”。如果您对 SQL Server 有任何疑问,请将其作为问题提出,而不是在评论中提出。
  • 也适用于 T-SQL,出色而简单的解决方案。将两列缩减为一列。
【解决方案2】:

试试这个,它对我有用

select (column1 || ' '|| column2) from table;

【讨论】:

  • 这看起来像 Oracle。
  • 这也适用于组合多个(超过 2 个)列。谢谢
  • SQL 标准提供了 CONCAT() 函数将两个字符串连接成一个字符串。然而,SQLite 不支持 CONCAT() 函数。相反,它使用连接运算符 (||) 将两个字符串合二为一。
【解决方案3】:

这对我有用

SELECT CONCAT(column1, ' ' ,column2) AS newColumn;

【讨论】:

    【解决方案4】:

    当我需要在要合并的列之间留一个空格时,这是唯一适合我的解决方案。

    select concat(concat(column1,' '), column2)
    

    【讨论】:

      【解决方案5】:

      如果您正在处理Oracle 那么:

      SELECT column1 || column2 AS column3
      FROM table;
      

      如果您正在使用 MySql,那么:

      SELECT Concat(column1 ,column2) AS column3
      FROM table;
      

      【讨论】:

        【解决方案6】:

        对于那里的 MySQL 粉丝,我喜欢 IFNULL() 函数。此处的其他答案建议在某些实现中与 ISNULL() 函数具有类似的功能。在我的情况下,我有一列描述是NOT NULL,还有一列序列号可能是NULL 这就是我将它们组合成一列的方式:

        SELECT CONCAT(description,IFNULL(' SN: ', serial_number),'')) FROM my_table;
        

        我的结果表明将字符串与NULL 连接的结果是NULL。在这些情况下,我一直在获得替代价值。

        【讨论】:

          【解决方案7】:

          我用过这种方式,它永远是最好的。在这段代码中也处理了 null

          SELECT Title,
          FirstName,
          lastName, 
          ISNULL(Title,'') + ' ' + ISNULL(FirstName,'') + ' ' + ISNULL(LastName,'') as FullName 
          FROM Customer
          

          试试这个...

          【讨论】:

            【解决方案8】:

            表:

            ---------------------
            | column1 | column2 |
            ---------------------
            |   abc   |   xyz   |
            ---------------------
            

            Oracle:

            SELECT column1 || column2 AS column3
            FROM table_name;
            

            输出:

            表:

            ---------------------
            | column3           |
            ---------------------
            | abcxyz            |
            ---------------------
            

            如果您想将',''.' 或任何字符串放在两列数据中,那么您可以使用:

            SELECT column1 || '.' || column2 AS column3
            FROM table_name;
            

            输出:

            表:

            ---------------------
            | column3           |
            ---------------------
            | abc.xyz           |
            ---------------------
            

            【讨论】:

              【解决方案9】:
              convert(varchar, column_name1) + (varchar, column_name)
              

              【讨论】:

                【解决方案10】:
                SELECT Column1 + ' - ' + Column2 AS 'FullName' FROM TableName                              
                

                【讨论】:

                • 简单的组合方式
                【解决方案11】:
                SELECT   CONVERT (nvarchar (10), Month(NextDate))+'-'+CONVERT (nvarchar (10), Year(NextDate)) as MonthOfYear, COUNT(CaseNo) as CountDisposal
                FROM dbo.Main_Cause_List 
                WHERE (DisposalState = 'Dispossed-off') 
                GROUP BY Month(NextDate),Year(NextDate);
                

                【讨论】:

                • 欢迎来到 Stack Overflow。没有任何解释的代码转储很少有帮助。 Stack Overflow 是关于学习的,而不是提供 sn-ps 来盲目复制和粘贴。请edit您的问题并解释它如何回答所提出的具体问题。见How to Answer。在用现有答案回答老问题(这个问题超过 7 年)时,这一点尤其重要。与已有的答案相比,此答案有何改进?
                【解决方案12】:

                尝试使用coalesce()concat() 组合SQL 查询中的列。

                假设您在 user 表中有 4 列 (id, name, phone_number, country_code),并且您希望按以下格式打印电话号码: +countrycodephonenumber

                例如:1、毗湿奴、9961907453、91 将返回电话号码为 +919961907453。

                您可以使用以下查询来获得上述结果。

                select coalesce(concat('+', country_code, phone_number)) from user;
                

                【讨论】:

                  猜你喜欢
                  • 2013-01-23
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2021-01-23
                  • 1970-01-01
                  相关资源
                  最近更新 更多