【SQL】文字列からスペース(空白)を削除するには?過去と現在、二通りの方法について解説
  • facebookページ
  • twitterページ
  • 2020.06.12

    【SQL】文字列からスペース(空白)を削除するには?過去と現在、二通りの方法について解説

    SQL Serverではよく”LTRIM(RTRIM(文字列))”というのを見かけますが、なんでTRIMを使わないのでしょうか?

    SQL Serverでは2017年のアップデートまでTRIM関数というものが実装されていませんでした。現在は使えるようになっています。

    以前のSQL ServerではTRIM関数は実装されておらず、代わりにLTRIMとRTRIMを組み合わせて使用することで解決していました。

    しかしSQL Server 2017の新機能でついにTRIM関数が実装されましたので、今回はこのTRIM関数について解説してみたいと思います。

    新機能が実装されてから既に何年か経っているのでもうご存じの方も多いとは思いますが、TRIM関数の実装を知らなかった人やこれから学習を始める人は必見です!

    TRIM関数の使い方

    TRIM関数はスペース(空白)並びに指定した文字を文字列の前後から削除する場合に使用します。

    SQL ServerでTRIM関数を使用する場合には次のように記述します。

    基本的には「TRIM([ 文字列 ])」という形で使いますが、オプショナル項目を指定することによって任意の文字を削除することが出来ます。

    オプショナル項目を指定する場合には、「FROM [ 文字列 ]」という形で文字列を指定します。

    また削除したい文字が複数個存在する場合には、同時に指定することも可能です。この時、削除したい文字の順番は関係ありません。

    それでは実際にコードで見てみましょう。

    まず基本構文を使って結果を表示してみました。

    DECLAREを使って「@input」に「(半角スペース5個)AB,CD, EFG(半角スペース3個)」を代入しています。

    基本構文ではTRIM関数に削除したい文字を未指定のまま文字列のみを指定しています。

    こうすることで、文字列の両側から半角スペースが削除されます。

    結果でも、文字列の両側から半角スペースが削除されていることが確認できると思います。

    削除したい文字を複数指定する場合

    次は削除したい文字を指定してみます。

    まず3行目のResult1では、TRIM関数のオプショナル項目(削除したい文字)に「A」「G」「 (半角スペース)」を指定しています。

    4行目のResult2ではTRIM関数のオプショナル項目(削除したい文字)から敢えてスペース(空白)を外し、「A」「G」のみ指定しました。

    結果を見てみると、Result1では@inputから半角スペースが削除された後で「A」「G」が削除されています。

    しかしResult2では、スペース(空白)を指定しなかったことで「A」「G」が@inputの両端とはなっていない為、何も削除されることなくそのまま表示されていることが確認できます。

    全角スペースを削除する

    TRIM関数はオプショナル項目の指定が可能なため、LTRIM及びRTRIMではトリムが不可能だった全角スペースもトリムすることが出来ます。

    早速コードと結果を見てみましょう。

    上のコードは、DECLAREで変数”@input”にセットされた「(全角スペース3個)Trim Sample(半角スペース2個)」に対し、RTRIMとTRIM関数でどのように表示されるかを比較しています。

    LTRIMとRTRIMではオプショナル項目が指定できない為、「LTRIM(RTRIM(@input))」としてスペース(空白)をトリムするしかありません。

    しかしこれら二つの関数は文字コードが”CHAR(32)”のスペース(空白)しかトリム出来ない為、@inputに代入された文字列の全角スペースがそのまま残っていることが確認できます。

    一方TRIM関数を使った方法では、キチンと半角スペースもトリムされた文字列が返されています。

    以前の方式で全角スペースをトリムする方法

    今ではもう使われることはありませんが、2017アップデートでTRIM関数が実装されるまでのSQL Serverではどのようにして全角スペースをトリムしていたのでしょうか?

    答えは次の通りです。

    まず「LTRIM(RTRIM(@input))」を使うところまでは先ほどのコードと一緒です。

    しかしこの方法では全角スペースがトリム出来ない為、まず最初に”replace”で@inputに代入されている文字列の全角スペースを半角スペースに置き換えます。

    それから後にLTRIMとRTRIMを組み合わせた関数を使用しますが、こうしてみるとTRIM関数と比べ、非常に冗長なコードとなってしまうことがわかります。

    また括弧内に複数の括弧をネストする形となっているため、非常に解り難い構造です。

    この結果から、TRIM関数の実装でSQL Serverにおけるトリムがどれほど楽になったかがうかがえます。

    まとめ

    今回はSQL Serverに2017から実装された「TRIM関数」について解説してみましたがいかがでしたか?

    今までなぜSQL ServerだけTRIM関数が実装されていなかったのか?

    その理由は不明ですが、現在は既に実装済みですし、実装当初はAnywhereのバージョンではトリムできなかった全角スペースについても、今現在ではトリム出来るように仕様が変更されています。

    構文自体も難しくない非常にシンプルなものとなっているので、この記事を読んでTRIM関数を使いこなせるように学習しましょう。



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE