よく使われる文字列関数 3 - REPLACE, CHARINDEX, CHAR

よく使われる文字列関数 3 - REPLACE, CHARINDEX, CHAR

前回は 「 よく使われる文字列関数 2 - LTRIM, RTRIM, UPPER, LOWER, LEN 」 で、 文字列関数 LTRIM, RTRIM, UPPER, LOWER, LEN を使ってみました。

今回は、SQL Server のビルトインのファンクションの中から、文字列関数の REPLACE, CHARINDEX, CHAR を使ってみましょう。


REPLACE ファンクション

REPLACE ファンクションは、[文字列] の中の全ての [置き換える対象の文字列] を [置き換え後の文字列] に置換します。 構文は次の通りです。

REPLACE ( [文字列] , [置き換える対象の文字列] , [置き換え後の文字列] )

例えば 「CompanyA,CompanyB,CompanyC」 とい文字列の 「,」 を 「|」 に置換したり、「Company」 を 「CP_」 に置換するには次のようにします。

DECLARE @InputString VARCHAR(500) = 'CompanyA,CompanyB,CompanyC';

SELECT  @InputString,
        REPLACE(@InputString, ',', '|'),
        REPLACE(@InputString, 'Company', 'CP_');

[ 実行結果 ]
REPLACE ファンクション

それぞれ、指定した文字が置換されていますね。

CHARINDEX ファンクション

CHARINDEX ファンクションは、[文字列] を前から順番に探していき、[探す文字列] が見つかったら、その文字が始まる位置を整数で返す関数です。

見つからなかった場合は 0 を返します。 構文は次の通りです。

CHARINDEX ( [探す文字列], [文字列] [ , [開始位置] ] )

[開始位置] はオプショナルで整数で指定し、指定した場合はその位置から検索を開始します。

位置の指定は 1 から始まり、 0 やマイナスの値を指定した場合は文字列の一番最初から検索されます。


例えば、NRT-JL7016-LAX という入力文字列から 「-」 や 「LA」 という文字の位置を探すには次のようにします。

DECLARE @InputString VARCHAR(100) = 'NRT-JL7016-LAX';

SELECT  @InputString,
        CHARINDEX('-', @InputString),       
        CHARINDEX('-', @InputString, 5),
        CHARINDEX('LA', @InputString),
        CHARINDEX('B', @InputString);

[ 実行結果 ]
CHARINDEX ファンクション

それぞれの開始位置が返ってきましたね。

CHARINDEX は SUBSTRING などと組み合わせて、文字列を取り出したりする時にも便利です。 例えばカッコで囲まれた部分の文字を取り出す時などに使えます。


CHAR ファンクション

CHAR ファンクションは、指定した ASCII コードを表す整数を文字(CHAR(1) 型)に変換して返します。 構文は次の通りです。

CHAR([ASCII コードを表す整数])

文字にタブや改行を挿入したい時に便利です。

タブ - CHAR(9)
ラインフィード - CHAR(10)
キャリッジリターン - CHAR(13)

DECLARE @Input1 NVARCHAR(50) = 'AAAA Company',
        @Input2 NVARCHAR(50) = 'BBBB Company';

PRINT '--- Output1 ---';
PRINT @Input1 + CHAR(9) + @Input2;
PRINT '--- Output2 ---';
PRINT @Input1 + CHAR(10) + @Input2;
PRINT '--- Output3 ---';
PRINT @Input1 + CHAR(13) + @Input2;

[ 実行結果 ]
CHAR ファンクション

© 2010-2024 SQL Server 入門