SQL Server:连接多个列的最佳方法?

时间:2014-06-23 16:40:19

标签: sql sql-server-2012

我正在尝试连接SQL Server 11.00.3393中的查询中的多个列。

我尝试了新功能CONCAT(),但是当我使用两列以上时它不起作用。

所以我想知道这是否是解决问题的最佳方法:

SELECT CONCAT(CONCAT(CONCAT(COLUMN1,COLUMN2),COLUMN3),COLUMN4) FROM myTable

由于COLUMN1 + COLUMN2值,我无法使用NULL

修改

如果我尝试SELECT CONCAT('1','2','3') AS RESULT,我会收到错误

  

CONCAT功能需要2个参数

5 个答案:

答案 0 :(得分:15)

通过话语,很明显问题在于使用VS2010来编写查询,因为它使用了规范的CONCAT()函数,该函数仅限于2个参数。可能有一种方法可以改变它,但我不知道它。

替代方案:

SELECT '1'+'2'+'3'

此方法要求将非字符串值转换/转换为字符串,以及NULLISNULL()处理COALESCE()

SELECT  ISNULL(CAST(Col1 AS VARCHAR(50)),'')
      + COALESCE(CONVERT(VARCHAR(50),Col2),'')

答案 1 :(得分:2)

SELECT CONCAT(LOWER(LAST_NAME), UPPER(LAST_NAME)
       INITCAP(LAST_NAME), HIRE DATE AS ‘up_low_init_hdate’)
FROM EMPLOYEES
WHERE HIRE DATE = 1995

答案 2 :(得分:0)

尝试使用以下内容:

SELECT 
    (RTRIM(LTRIM(col_1))) + (RTRIM(LTRIM(col_2))) AS Col_newname,
    col_1,
    col_2 
FROM 
    s_cols 
WHERE
    col_any_condition = ''
;

答案 3 :(得分:0)

  

块引用

Oracle SQL 中使用连接非常简单有趣。但是对MS-SQL并不了解。

  

块引用

我们在这里寻找Oracle: 句法: SQL> select First_name||Last_Name as Employee from employees;

结果:EMPLOYEE

EllenAbel SundarAnde MozheAtkinson

这里AS:关键字用作别名。 我们可以与 NULL 值连接。 例如:columnm1 || Null

假设您的任何列包含 NULL 值,则结果将仅显示该列具有值的值。

您还可以在连接中使用文字字符串

e.g。 select column1||' is a '||column2 from tableName; 结果:column1是column2。 文字之间应该用单引号括起来。你排除数字。

注意:这仅适用于oracle服务器// SQL。

答案 4 :(得分:-3)

如果字段可以为空,那么您必须处理这些空值。请记住,null具有传染性,concat('foo', null)只会导致NULL

SELECT CONCAT(ISNULL(column1, ''),ISNULL(column2,'')) etc...

基本上测试每个字段的空值,如果是,则替换为空字符串。