我正在尝试连接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个参数
答案 0 :(得分:15)
通过话语,很明显问题在于使用VS2010来编写查询,因为它使用了规范的CONCAT()
函数,该函数仅限于2个参数。可能有一种方法可以改变它,但我不知道它。
替代方案:
SELECT '1'+'2'+'3'
此方法要求将非字符串值转换/转换为字符串,以及NULL
或ISNULL()
处理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;
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...
基本上测试每个字段的空值,如果是,则替换为空字符串。