SQL Server 2017 新機能 - TRIM 関数

SQL Server 2017 新機能 - TRIM 関数

やっと!という感じですが、SQL Server 2017 で TRIM という組み込み関数ができました。

これまでは、前後の空白をトリムしたい時には LTRIM と RTRIM の二つを使わなければなりませんでしたが、SQL Server 2017 以降では TRIM 関数ひとつでトリムできるようになります。


TRIM 関数

TRIM 関数は、CHAR(32) のスペースか、指定した文字を、文字の前後から削除してくれる関数で、構文は次の通りです。

TRIM ([[ 削除したい文字 ] FROM ] [ 文字列 ] )

[[ 削除したい文字 ] FROM ] の部分はオプショナルで、指定しなければ [ 文字列 ] の前後から CHAR(32) のスペースが削除されます。

[ 削除したい文字 ] には削除したい文字を複数個指定することができ、指定した順番は関係ありません。


例えば、' AB,CD., # ' という文字列を TRIM 関数を使ってトリムしてみます。

DECLARE @Input NVARCHAR(MAX) = '   AB,CD., #  ';

SELECT  '||' + @Input + '||' AS Result1,
        '||' + TRIM(@Input) + '||' AS Result2,
        '||' + TRIM('#,' FROM @Input) + '||' AS Result3,
        '||' + TRIM('.#, ' FROM @Input) + '||' AS Result4;

[ 実行結果 ]
SQL Server 2017 新機能 - TRIM 関数 1

結果が見やすいように文字の前後に 「 || 」 を追加しています。

Result2 は、削除したい文字を指定しなかったので、前後の空白がトリムされています。

Result3 は、'#,' を削除する文字として指定しましたが、@Input の前後にその文字がきていなかったので空白もトリムされず、入力文字列のまま出力されています。

Result4 は '.#, ' Result3 に加え空白も削除する文字列として指定したので、前後の指定した文字がトリムされて 「 AB,CD 」 が返ってきています。


また、LTRIM(RTRIM(@Input)) ではトリムできなかった、全角スペースも指定してトリムできます。

DECLARE @Input NVARCHAR(MAX) = N' てすと ';

SELECT  '||' + LTRIM(RTRIM(@Input)) + '||' AS Result1,
        '||' + TRIM('  ' FROM @Input) + '||' AS Result2

[ 実行結果 ]
SQL Server 2017 新機能 - TRIM 関数 2

見えませんが、Result2 の [ 削除したい文字 ] の '  ' には '[全角スペース][半角スペース]' と指定してあります。

© 2010-2024 SQL Server 入門