web-dev-qa-db-ja.com

SQL Server:複数の列を連結する最良の方法は?

SQL Server 11.00.3393のクエリで複数の列を連結しようとしています。

新しい関数CONCAT()を試しましたが、3つ以上の列を使用すると機能しません。

だから私はそれが問題を解決する最良の方法だろうかと思います:

_SELECT CONCAT(CONCAT(CONCAT(COLUMN1,COLUMN2),COLUMN3),COLUMN4) FROM myTable
_

NULL値のため、_COLUMN1 + COLUMN2_を使用できません。

[〜#〜] edit [〜#〜]

SELECT CONCAT('1','2','3') AS RESULTを試すとエラーが発生します

CONCAT関数には2つの引数が必要です

14
D. Caan

談話を通して、問題がVS2010を使用してクエリを記述することにあることは明らかです。これは、2つのパラメーターに制限されている標準のCONCAT()関数を使用しているためです。おそらくそれを変更する方法がありますが、私はそれを知りません。

別の方法:

_SELECT '1'+'2'+'3'
_

このアプローチでは、ISNULL()またはCOALESCE()によるNULLの処理と同様に、文字列以外の値を文字列にキャスト/変換する必要があります。

_SELECT  ISNULL(CAST(Col1 AS VARCHAR(50)),'')
      + COALESCE(CONVERT(VARCHAR(50),Col2),'')
_
16
Hart CO
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
JUVA

ブロッククォート

Oracle SQLで連結を使用するのは非常に簡単で興味深いです。しかし、MS-SQLについてはあまり知りません。

ブロッククォート

Oracleの場合:構文:SQL> select First_name||Last_Name as Employee from employees;

結果:従業員

エレン・アベル・スンダールアンデ・モジェ・アトキンソン

ここでAS:エイリアスとして使用されるキーワード。 [〜#〜] null [〜#〜]値と連結できます。例えば:columnm1 || Null

いずれかの列に[〜#〜] null [〜#〜]値が含まれていると仮定すると、結果には値を持つその列の値のみが表示されます。

リテラル文字列を連結で使用することもできます。

例えばselect column1||' is a '||column2 from tableName;結果:column1はcolumn2です。間にあるリテラルは単一引用符で囲む必要があります。あなたは数字を除外することができます。

[〜#〜] note [〜#〜]:これはOracleサーバー// SQL専用です。

0

以下を使用してみてください:

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