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つの引数が必要です
談話を通して、問題がVS2010を使用してクエリを記述することにあることは明らかです。これは、2つのパラメーターに制限されている標準のCONCAT()
関数を使用しているためです。おそらくそれを変更する方法がありますが、私はそれを知りません。
別の方法:
_SELECT '1'+'2'+'3'
_
このアプローチでは、ISNULL()
またはCOALESCE()
によるNULL
の処理と同様に、文字列以外の値を文字列にキャスト/変換する必要があります。
_SELECT ISNULL(CAST(Col1 AS VARCHAR(50)),'')
+ COALESCE(CONVERT(VARCHAR(50),Col2),'')
_
SELECT CONCAT(LOWER(LAST_NAME), UPPER(LAST_NAME)
INITCAP(LAST_NAME), HIRE DATE AS ‘up_low_init_hdate’)
FROM EMPLOYEES
WHERE HIRE DATE = 1995
ブロッククォート
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専用です。
以下を使用してみてください:
SELECT
(RTRIM(LTRIM(col_1))) + (RTRIM(LTRIM(col_2))) AS Col_newname,
col_1,
col_2
FROM
s_cols
WHERE
col_any_condition = ''
;