Microsoft SQLServerには2017バージョンより前のものにはTrim関数はありませんでした。
なので文字列の空白を取り除くには
rtrim( ltrim( '空白を取り除く文字列' ))
のようにrTrim(右側の空白を取り除く)関数とlTrim(左側の空白を取り除く)関数を組み合わせて使う必要がありました。
SQLServerではTRIM関数がありません
SQLServerではOracleやMySQLなどでサポートされている空白を取り除くTRIM関数がないので、カラムの前後の空白を取り除くにはLTRIM関数とRTRIM関数を組み合わせて実現します。※SQLServer 2017でTRIM関数が追加されました。
SQLServer2107からはこの問題点を解決するためにtrim関数が実装されました。
SQLServerのtrim関数
SQLServerのTrim関数はコールすると文字列の前後の半角空白文字を取り除いてくれます。
SELECT ' 対象の文字列 ' AS '12345678901234567890' SELECT trim(' ←半角空白<対象の文字列>半角空白→ ') AS '12345678901234567890'
実行結果は
12345678901234567890 対象の文字列 12345678901234567890 対象の文字列
と文字列の前後の半角空白文字が取り除かれています。
Trim関数は取り除く文字を指定できる
SQLServerのTrim関数は取り除く文字を指定できるようになっています。
SELECT TRIM( 'A' FROM 'ABCDEFGHIA')
実行結果は
(列名なし) BCDEFGHI
となり、文字列の前後の「A」が取り除かれています。
Trim関数は取り除く文字を1度に複数指定できる
SQLServerのTrim関数は取り除く文字を複数1度に指定することができます。
SELECT TRIM( 'ABC' FROM 'BACDEFGHICA')
実行結果は
(列名なし) DEFGHI
となり、文字列の前後の「A」、「B」、「C」が取り除かれています。
これをうまく使えば「半角空白」「全角空白」「タブ文字」「改行文字」などテキストとして扱うのに不要なものを1度に取り除くことができますね。
まとめ
SQLServerのTrim関数は前後の半角空白文字を取り除けるだけではなく、複数の文字を1度に取り除ける強力なものになっています。
これまで複雑にRTRIM関数、LTRIM関数を組み合わせていた処理がTRIM関数1つで書けるようになりました。