【问题标题】:Select 2 columns in one and combine them将 2 列合二为一并组合起来
【发布时间】:2011-07-17 10:32:14
【问题描述】:

是否可以在一列中选择两列并将它们组合起来?

例子:

select something + somethingElse as onlyOneColumn from someTable

【问题讨论】:

  • 目前尚不清楚您是要对两个值进行操作(例如从名字和姓氏列中生成“Joe Smith”和“Jane Doe”全名结果)还是要合并所有值像“Joe”、“Jane”、“Smith”、“Doe”这样的结果。

标签: sql sql-server-2005 select


【解决方案1】:

为了完成@Pete Carter 的回答,我会在 UNION 上添加一个“ALL”(如果您需要保留重复的条目)。

(SELECT column1 as column FROM table )

联合所有

(SELECT column2 as column FROM table )

 DROP TABLE IF EXISTS #9
    CREATE TABLE #9 
(
    USER1 int
    ,USER2 int
)
INSERT INTO #9
 VALUES(1, 2), (1, 3), (1, 4), (2, 3)
 ------------------------------------------------
(SELECT USER1 AS 'column' from #9)
 UNION ALL
 (SELECT USER2 AS 'column' from #9)

然后会返回:Result

【讨论】:

    【解决方案2】:
    SELECT firstname || ' ' || lastname FROM users;
    

    【讨论】:

      【解决方案3】:

      没有其他答案对我有用,但这确实有效:

      SELECT CONCAT(Cust_First, ' ', Cust_Last) AS CustName FROM customer
      

      【讨论】:

        【解决方案4】:
        select column1 || ' ' || column2 as whole_name FROM tablename;
        

        这里|| 是用于将它们连接到单列的连接运算符,|| 内部的 ('') 用于两列之间的空间。

        【讨论】:

          【解决方案5】:

          是的,就像你做的那样:

          select something + somethingElse as onlyOneColumn from someTable
          

          如果你查询数据库,你会得到正确的答案。

          会发生什么是你要求一个表达。一个非常简单的表达式只是一个列名,一个更复杂的表达式可以包含公式等。

          【讨论】:

            【解决方案6】:

            我希望这个答案有帮助:

            SELECT (CAST(id AS NVARCHAR)+','+name) AS COMBINED_COLUMN FROM TABLENAME;
            

            【讨论】:

              【解决方案7】:

              如果其中一列是我经历过的数字,oracle 会将“+”视为求和运算符,而不是连接。

              例如:

              select (id + name) as one from table 1; (id is numeric) 
              

              抛出无效号码异常

              在这种情况下,您可以 ||连接运算符。

              select (id || name) as one from table 1;
              

              【讨论】:

                【解决方案8】:
                (SELECT column1 as column FROM table )
                UNION 
                (SELECT column2 as column FROM table )
                

                【讨论】:

                  【解决方案9】:

                  + 运算符应该可以很好地解决问题。但请记住,如果其中一列为 null 或没有任何值,它将为您提供 NULL 结果。相反,将+ 与函数COALESCE 结合使用,您将被设置。

                  这是一个例子:

                  SELECT COALESCE(column1,'') + COALESCE(column2,'') FROM table1. 
                  

                  对于此示例,如果 column1NULL,则将显示 column2 的结果,而不是简单的 NULL

                  希望这会有所帮助!

                  【讨论】:

                    【解决方案10】:

                    您的语法应该可以工作,也许可以在列之间添加一个空格,例如

                    SELECT something + ' ' + somethingElse as onlyOneColumn FROM someTable

                    【讨论】:

                    • 这只有在 something 和 somethingElse 都是字符串时才有效。
                    【解决方案11】:

                    是的,

                    SELECT CONCAT(field1, field2) AS WHOLENAME FROM TABLE
                    WHERE ...
                    

                    将产生如下数据集:

                    WHOLENAME
                    field1field2
                    

                    【讨论】:

                      【解决方案12】:

                      是的,您可以很容易地组合列,例如连接字符数据:

                      select col1 | col 2 as bothcols from tbl ...
                      

                      或添加(例如)数字数据:

                      select col1 + col2 as bothcols from tbl ...
                      

                      在这两种情况下,您最终都会得到一个包含组合数据的列 bothcols。如果列不兼容,您可能必须强制数据类型。

                      【讨论】:

                        【解决方案13】:

                        是的,只要数据类型兼容,这是可能的。如果不是,请使用 CONVERT() 或 CAST()

                        SELECT firstname + ' ' + lastname AS name FROM customers
                        

                        【讨论】:

                        • 如果 firstname 和 lastname 是字符串,这对我来说在 SQLite 中不正确,但正如 @user1313900 回答的那样,你必须是用户 ||连接两列的两个字符串
                        猜你喜欢
                        • 2020-04-21
                        • 1970-01-01
                        • 2022-07-21
                        • 1970-01-01
                        • 2014-08-04
                        • 2016-12-02
                        • 2023-03-17
                        • 1970-01-01
                        相关资源
                        最近更新 更多