TRANSLATE、REPLACE関数(SQL Server)

ITコーディネータのシュウです。

blog108_skywalk

上の写真は、10月に会社のイベントで三島スカイウォークに行った時の写真です。地名である「三島」と、「まるで空を歩いているような感覚を味わえる」という意味が込められた「スカイウォーク」、この2つのキーワードを入れて「三島スカイウォーク」という名前になったそうです。私は初めて行ったのですが、全長400mの日本一長い歩行者専用吊り橋ということで、富士山や駿河湾が一望できるとても素晴らしい景色が楽しめる場所でした。
また、ロングジップスライドという、往復560mのワイヤーを滑車で滑り降りていき、絶景を楽しみながらスリルを味わえるアクティビティもあり、若い社員が挑戦していましたが、この年になると、なかなか勇気が出ないので、若いということは素晴らしいと改めて感じました。また、森の中につくられ、樹から樹へと渡り歩くようなアドベンチャーコースなどもあり、家族で行っても1日楽しめるのではないかと思います。


<本日の題材>
TRANSLATE、REPLACE関数(SQL Server)

今回も、今までブログで取り上げていなかった関数について紹介しようと思います。指定した文字を別の文字に置換するTRANSLATE関数とREPLACE関数を取り上げます。

例)
まず、TRANSLATE関数ですが、構文は、
TRANSLATE ( inputString, characters, translations ) 
で、inputString という対象文字列に対して、データの中の文字に、characters の文字がどれか含まれていれば、translations の文字でそれぞれの文字を置換するというもので、characters と translations には同じ文字数の設定が必要となります。
例えば、複数の種類のかっこ(「」【】『』)があり、それらを全て [] に置き換えたいというような場合は、下記のように記載します。

SELECT TRANSLATE(
'「こんにちは」【さようなら】『こんばんは』',
'「」【】『』',
'[][][]'
);

blog108_1_

抽出結果は、
[こんにちは][さようなら][こんばんは]
となり、
「 → [ 、 」→ ] 、【 → [ 、 】→ ] 、『 → [ 、 』→ ] というように、それぞれが置換されたことが確認できます。
これを、置換でよく知られている REPLACE 関数を使って同じように処理してみます。REPLACE関数の構文は、REPLACE ( string_expression , string_pattern , string_replacement ) であり、string_expression という対象文字列に対して、string_pattern という検索文字列があれば、string_replacementという文字に置換するというもので、以下のようになります。

SELECT
REPLACE
(
    REPLACE
    (
        REPLACE
        (
            REPLACE
            (
                REPLACE
                (
                    REPLACE
                    (
                        '「こんにちは」【さようなら】『こんばんは』',
                        '「',
                        '['
                     ),
                     '」',
                     ']'
                ),
                '【',
                '['
            ),
            '】'
            ,']'
        ),
        '『',
        '['
    ),
    '』',
    ']'
);

実行してみると

blog108_3

となり、結果は同様ですが、カッコの種類ごとにREPLACE関数で設定しないといけないので、上記のようにSQL文が長くなってしまいます。このような場合には、TRANSLATE関数のほうが簡単に記載できることがわかります。

 
今日は以上まで

にほんブログ村 IT技術ブログへ
にほんブログ村