よく使われる文字列関数 2 - LTRIM, RTRIM, UPPER, LOWER, LEN
よく使われる文字列関数 2 - LTRIM, RTRIM, UPPER, LOWER, LEN
前回は 「 よく使われる文字列関数 1 - LEFT, RIGHT, SUBSTRING 」 で、 文字列関数 LEFT, RIGHT, SUBSTRING を使ってみました。
今回は、SQL Server のビルトインのファンクションの中から、よく使われる文字列関数の LTRIM, RTRIM, UPPER, LOWER, LEN を使ってみましょう。
LTRIM & RTRIM ファンクション
LTRIM ファンクションは文字列の左側の空白を削除した文字列を返し、RTRIM ファンクションは文字列の左側の空白を削除した文字列を返します。
それぞれの構文は次の通りです。
LTRIM([文字列])
RTRIM([文字列])
文字列の左右両方の空白を削除したい場合は LTRIM(RTRIM([文字列])) のように、LTRIM と RTRIM を一緒に使わなければなりませんが、SQL Server 2017 からは両端のスペースを一度の削除してくれる TRIM ファンクションが使用できるようになるようです。
例えば、前後に空白が 5 個ずつあるような文字列に、LTRIM と RTRIM ファンクションを使って空白を削除すると次のようになります。
※ わかりやすいように、前後にカッコを追加しています。
DECLARE @Input NVARCHAR(50) = ' ABCDE '; SELECT '[' + @Input + ']' AS Input, '[' + LTRIM(@Input) + ']' AS LTRIM_Input, '[' + RTRIM(@Input) + ']' AS RTRIM_Input, '[' + LTRIM(RTRIM(@Input)) + ']' AS TRIM_Input;
[ 実行結果 ]
それぞれ、空白が削除されていますね。
UPPER & LOWER ファンクション
UPPER ファンクションは文字列を大文字にして返し、LOWER ファンクションは文字列を小文字にして返します。
それぞれの構文は次の通りです。
UPPER([文字列])
LOWER([文字列])
例えば、Yamada という入力文字列に対して、UPPER と LOWER ファンクションを使って変換すると次のようになります。
DECLARE @Input NVARCHAR(50) = 'Yamada'; SELECT @Input, UPPER(@Input) AS UPPER_Input, LOWER(@Input) AS LOWER_Input;
[ 実行結果 ]
それぞれ、大文字と小文字に変換されていますね。
LEN & DATALENGTH ファンクション
LEN ファンクションは後ろの空白を除いた、入力文字列の文字数を返します。
DATALENGTH ファンクションは文字列関数の仲間ではありませんが、インプットが使っているバイト数を返します。
それぞれの構文は次の通りです。
LEN([文字列])
DATALENGTH ([任意のデータ型の値])
例えば、「 数学1 」 という文字列に対して、LEN と DATALENGTH ファンクションを使って長さを取得すると次のようになります。
DECLARE @Input1 NVARCHAR(50) = N'数学1'; SELECT @Input1, LEN (@Input1) AS LEN_Input1, DATALENGTH (@Input1) AS DATALENGTH_Input1; -- 前後にスペースつき DECLARE @Input2 NVARCHAR(50) = N' 数学1 '; SELECT @Input2, LEN (@Input2) AS LEN_Input2, DATALENGTH (@Input2) AS DATALENGTH_Input2;
[ 実行結果 ]
スペースなしの '数学1' は LEN は 3 (文字)、DATALENGTH は 6 (バイト)を返しています。
前後にスペースありの ' 数学1 ' は、 LEN は後ろの空白は数えず 4 (文字)、 DATALENGTH は前後の空白も含めて 10 (バイト)を返しています。
NVARCHAR は Unicode なので、文字数 x 2 が返ってきます。
次は、よく使われる文字列関数の REPLACE, CHARINDEX, CHAR を使ってみましょう。