最後に、残りの文字列関数について見ていきましょう。
長さ、文字コード、類似性、識別子関連の関数一覧
関数名 | 戻り値 | 説明 |
---|---|---|
LEN | 数値(入力値依存) | 文字数を返します |
DATALENGTH | 数値(入力値依存) | 引数式に必要なバイト数を返します |
ASCII | int | ASCIIコードを返します |
CHAR | char(1) | ASCIIコード(0~255)を文字に変換します |
UNICODE | int | 指定した文字に対応するUnicodeの整数コードを返します |
NCHAR | nchar(1) | 整数コード(0~65535)からUnicode文字を返します |
SOUNDEX | varchar | 発音の似た単語を見つけるために、英数字の文字列を4文字のコードに変換します |
DIFFERENCE | int | 音の似た単語の類似度を0~4の数字で返します。4:類似性高、0:類似性低 |
QUOTENAME | nvarchar(258) | SQL Server識別子を作成します |
長さ(LEN、DATALENGTH)
文字列の長さを取得するには、LEN関数、DATALENGTH関数を使用します。LEN関数は引数の文字数を返します。行末の空白は除かれた状態でカウントされます。
DATALENGTH関数は引数のバイト数を返します。半角のアルファベット等は1バイト、全角の日本語等は2バイトとなります。
LEN関数、DATALENGTH関数の実行例
--文字長
SELECT LEN('123') /* → 3 (半角)*/
SELECT LEN('123 ') /* → 3 (行末の空白は無視)*/
SELECT LEN('あいう') /* → 3 (全角)*/
--数字桁数
SELECT LEN(123) /* → 3 (数値)*/
SELECT LEN(123.4) /* → 5 (数値)*/
--バイト長
SELECT DATALENGTH('123') /* → 3 */
SELECT DATALENGTH('あいう') /* → 6 */
SELECT DATALENGTH('あいう ') /* → 7 (行末の空白も対象)*/
文字コード変換(ASCII、CHAR、UNICODE、NCHAR)
ASCIIコードと文字を変換するには、ASCII関数、CHAR関数を使用します。CHAR関数はタブ文字や改行文字といった制御文字を出力する用途でも使用されます。 UNICODEと文字を変換するには、UNICODE関数、NCHAR関数を使用します。
ASCII関数、CHAR関数、UNICODE関数、NCHAR関数の実行例
--文字コード(ASCII)
SELECT ASCII('A') /* → 65 (文字からASCII)*/
SELECT CHAR(65) /* → A (ASCIIから文字)*/
SELECT CHAR(9) /* → タブ:TAB (制御文字) */
SELECT CHAR(10) /* → ラインフィード:LF (制御文字) */
SELECT CHAR(13) /* → キャリッジリターン:CR (制御文字) */
--文字コード(UNICODE)
SELECT UNICODE('青') /* → 38738 (文字からUNICODE)*/
SELECT NCHAR(38738) /* → 青 (UNICODEから文字)*/
類似性、識別子作成(SOUNDEX、DIFFERENCE、QUOTENAME)
文字列の発音の類似性を取得するには、SOUNDEX関数、DIFFERENCE関数を使用します。これらの関数の引数には英数字を指定できます。 SQL Serverの識別子を作成するには、QUOTENAME関数を利用できます。角かっこ以外にもシングルクォーテーション、ダブルクォーテーションを使って識別子を作成することもできます。
SOUNDEX関数、DIFFERENCE関数、QUOTENAME関数の実行例
--文字列の発音を4文字コード化、類似性の評価
SELECT SOUNDEX('csharp')
/* → C413 */
SELECT SOUNDEX('jsharp')
/* → J413 */
SELECT DIFFERENCE('csharp','jsharp')
/* → 3 (類似性を4段階で評価。3:比較的類似)*/
--文字列を[と]でエスケープして取得
SELECT QUOTENAME('識別子を[]で囲む')
/* → [識別子を[]]で囲む] */