【ハウツー】

Transact-SQLの関数を理解しよう - 文字列編

3 長さの取得、文字コード等

    青木淳夫  [2008/10/22]

    最後に、残りの文字列関数について見ていきましょう。

    長さ、文字コード、類似性、識別子関連の関数一覧

    関数名 戻り値 説明
    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('識別子を[]で囲む')
    /* → [識別子を[]]で囲む] */
    
    関連したタグ

    新着記事

    特設サイトの情報

      求人情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      転職ノウハウ

      あなたの仕事適性診断

      4つの診断で、自分の適性を見つめなおそう!

      Heroes File ~挑戦者たち~

      働くこと・挑戦し続けることへの思いを綴ったインタビュー

      はじめての転職診断

      あなたにピッタリのアドバイスを読むことができます。

      転職Q&A

      転職に必要な情報が収集できます

      スカウト転職する

      企業からアプローチのメッセージが届きます。

      マイナビニュースマガジン