SQL Server 入門 SQL Server 入門

ホーム > よく使われる SQL Server のビルトインのファンクション > よく使われる文字列関数 1 - LEFT, RIGHT, SUBSTRING

よく使われる文字列関数 1 - LEFT, RIGHT, SUBSTRING

よく使われる文字列関数 1 - LEFT, RIGHT, SUBSTRING

今回は、SQL Server のビルトインのファンクションの中から、よく使われる文字列関数の LEFT, RIGHT, SUBSTRING を使ってみましょう。

LEFT, RIGHT, SUBSTRING はどれも、引数として渡した文字列の一部を返す関数です。

こちら のスクリプトを実行して、テーブルを再生成しておいてください。 全てのテーブルは使いませんが、これらのテーブルが存在している前提で進めます。


LEFT ファンクション

LEFT ファンクションは文字列の左側から、指定した文字数分の文字を返します。 構文は次の通りです。

LEFT([文字列], [文字数を整数で指定])

文字数にマイナスの値を渡すとエラーになります。


例えば、Student テーブルの FirstName の、左から 2 文字を取得したい時は、このように取得できます。

SELECT  FirstName,
        LEFT(FirstName, 2)
FROM    Student;

[ 実行結果 ]
T-SQL でテーブルを作成する 1


RIGHT ファンクション

RIGHT ファンクションは文字列の右側から、指定した文字数の文字を返します。 構文は次の通りです。

RIGHT([文字列], [文字数を整数で指定])

文字数にマイナスの値を渡すとエラーになります。


例えば、Student テーブルの FirstName の、右から 2 文字を取得したい時は、このように取得できます。

SELECT  FirstName,
        RIGHT(FirstName, 2)
FROM    Student;

[ 実行結果 ]
T-SQL でテーブルを作成する 2

LEFT と左右が反対なだけで、ほぼ同じですね。


LEFT や RIGHT は左詰めや右詰めでゼロパディングする時なんかにも便利です。

StudentID を、前にゼロをつけて 8 桁で表示したい時は次のように取得することもできます。

SELECT  StudentID,
        RIGHT('00000000' + CAST(StudentID AS NVARCHAR), 8)
FROM    Student;

[ 実行結果 ]
T-SQL でテーブルを作成する 3

2 桁の StudentID がなかったのでわかりにくいかもしれませんが、2 桁の時は左側にゼロが 6 個追加された値が取得できます。


SUBSTRING ファンクション

SUBSTRING ファンクションは文字列やバイナリなどの一部を返す関数です。 構文は次の通りです。

SUBSTRING ([文字列], [スタート位置を整数で指定], [文字数を整数で指定])

スタート位置は 1 から始まります。 0 以下の値を指定してもエラーにはなりませんが、返ってくる文字列の文字数が (スタート位置の値 + 桁数 - 1) になってしまうので、ややこしいだけだと思います。

文字数はマイナスの値を渡すとエラーになります。


例えば、Student テーブルの FirstName の、5 文字目から 1 文字取得したい時は次のように取得できます。

SELECT  FirstName,
        SUBSTRING(FirstName, 5, 1)
FROM    Student;

[ 実行結果 ]
T-SQL でテーブルを作成する 4

5 文字目から 1 文字が取得できましたね。 このように、該当の文字列がない時には NULL ではなくて、空の文字が返ってきます。

あまり良いサンプルではなかったかもしれませんが、例えば 「 前 3 桁が市のコードで、その次の 7 桁が郵便番号で、、 」 のように、意味のあるコードなどが組み合わさってできたような文字列から情報を取り出す時に便利です。


次は、よく使われる文字列関数の LTRIM, RTRIM, UPPER, LOWER, LEN を見てみましょう。

次へ よく使われる文字列関数 2 - LTRIM, RTRIM, UPPER, LOWER, LEN

SQL Server 関連の人気書籍
ホーム > よく使われる SQL Server のビルトインのファンクション > よく使われる文字列関数 1 - LEFT, RIGHT, SUBSTRING