SQL Server | 文字列結合のやり方

【注目記事】

・SEの転職体験談 | 受託開発から自社製品開発へ
・SIer勤務のSEがパソナキャリアに相談してみた
・SIer勤務のSEがマイナビエージェントに相談してみた

SQL Serverで文字列結合する方法を紹介します。

+ ( プラス )で連結する

SQL Serverでは「+ (プラス)」を使うことで、文字列を連結できます。

expression同士は、同じデータ型(文字列なら文字列どうし、数値なら数値同士)か、暗黙的に変換できるものを指定する必要があります。

異なるデータ型を連結

+(プラス)は同じデータ型同士しか連結できませんが、データ型を変換する関数を利用することで数値型や日付型と文字列を連結できます。

数値型と文字列型を連結

CAST、CONVERT 関数を利用して文字列と数値を連結できます。

日付型と文字列型を連結

CONVERT、FORMAT関数を利用して、日付型と文字列型を連結できます。

CONVERT関数に指定するstyleは下記を参照ください。

(参考) CAST および CONVERT (Transact-SQL)

FORMAT関数に指定するformatは下記を参照ください。

(参考) FORMAT (Transact-SQL)

NULLを含む場合

+(プラス) で連結する文字列のうち、1つでもNULLが含まれていると結果がNULLになります。

ISNULL関数、もしくはSQL Server 2012 からはCONCAT関数を利用することで、NULLを空文字や指定した文字列に変換して連結できます。

なお、SQL Server 2008からSQL Server 2017までは、

SET CONCAT_NULL_YIELDS_NULL をOFFにすることで、連結する文字列にNULLが含まれていた場合、空文字扱いにできます。

ただし、今後のバージョンではOFFに設定できなくなる見込みなので、この設定は利用しない方がいいでしょう。

(参考) SET CONCAT_NULL_YIELDS_NULL

GROUP BYと文字列連結

「FOR XML PATH」を利用することで、 GROUP BYで集約した各行の文字列を連結できます。

文字列の切り捨て

文字列を連結するとき、連結した結果のバイト数が8000を超えると文字列が切り捨てられます。

ただし、連結する文字列のどちらかの文字サイズがmaxの場合、切り捨てずに連結されます。

SQLスキルを高めるためのおススメ書籍

SQLのスキルを高めるには、学校の試験勉強と同じように多くの問題を解いてみるのが効率的です。

『スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリシリーズ)』は、SQLの基本的な内容の解説に加え、200問を超える問題が掲載されているので、SQL初心者が学習に使うのにおススメです。

実際、この書籍を新卒1年目の新人さんに2-3週間かけて取組んでもらったことがあり、書籍を読んだ後に簡単なSQLの改修を任せましたが、基本的な部分にはつまずかずに改修を進められました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です