sql >> データベース >  >> RDS >> Mysql

MySQLでのCHARACTER_LENGTH()関数のしくみ

    MySQLでは、CHARACTER_LENGTH() 関数は、文字で測定された文字列の長さを返します。

    CHARACTER_LENGTH() CHAR_LENGTH()の同義語です 機能。

    構文

    構文は次のようになります:

    CHARACTER_LENGTH(str)

    str 長さが返される文字列です。

    例1-基本的な使用法

    基本的な使用例は次のとおりです。

    SELECT CHARACTER_LENGTH('Cat');
    

    結果は次のとおりです。

    +-------------------------+
    | CHARACTER_LENGTH('Cat') |
    +-------------------------+
    |                       3 |
    +-------------------------+
    

    例2–末尾の空白

    CHARACTER_LENGTH()に注意してください 計算に末尾の空白(文字列の最後のスペースなど)が含まれます。

    したがって、前の例の最後にスペースを追加すると、次のようになります。

    SELECT CHARACTER_LENGTH('Cat');
    

    結果は次のとおりです。

    +--------------------------+
    | CHARACTER_LENGTH('Cat ') |
    +--------------------------+
    |                        4 |
    +--------------------------+
    

    ただし、TRIM()を使用することで、その末尾のスペースをいつでも削除できます。 関数またはRTRIM() 機能:

    SELECT 
      CHARACTER_LENGTH(TRIM('Cat ')) AS 'TRIM',
      CHARACTER_LENGTH(RTRIM('Cat ')) AS 'RTRIM';
    

    結果は次のとおりです。

    +------+-------+
    | TRIM | RTRIM |
    +------+-------+
    |    3 |     3 |
    +------+-------+
    

    例3–先頭の空白

    同じ概念が先頭の空白にも当てはまります。 TRIMのいずれかを使用できます またはLTRIM

    SELECT 
      CHARACTER_LENGTH(TRIM(' Cat')) AS 'TRIM',
      CHARACTER_LENGTH(LTRIM(' Cat')) AS 'LTRIM';
    

    結果:

    +------+-------+
    | TRIM | LTRIM |
    +------+-------+
    |    3 |     3 |
    +------+-------+
    

    例4–データ型

    文字列がどのデータ型として保存されているかは関係ありませんが、同じ結果が返されます。これは、LENGTH()とは対照的です。 関数。データがUnicode文字列として格納されている場合に2倍の文字数を返します。

    次の例では、ArtistName列は varchar(255)を使用しています :

    SELECT CHARACTER_LENGTH(ArtistName) Result
    FROM Artists
    WHERE ArtistName = 'Lit';
    

    結果は次のとおりです。

    +--------+
    | Result |
    +--------+
    |      3 |
    +--------+
    

    そして、ArtistNameを変更すると Unicodeを使用する列:

    ALTER TABLE Artists 
    MODIFY COLUMN ArtistName VARCHAR(255) unicode;
    

    そして、同じクエリをもう一度実行します:

    SELECT CHARACTER_LENGTH(ArtistName) 
    FROM Artists
    WHERE ArtistName = 'Lit';
    

    それでも同じ結果が得られます:

    +--------+
    | Result |
    +--------+
    |      3 |
    +--------+
    

    ただし、LENGTH()を使用した場合 関数の場合、結果は6になります。これは、Unicode文字列が1文字あたり2バイトを格納し、LENGTH()が格納されるためです。 関数は、バイト単位で測定された長さを返します。


    1. CentOS7にMariaDB10をインストールして保護する方法

    2. Terraformを使用したMySQL/MariaDBVaultデータベースシークレットエンジンのプロビジョニング

    3. AndroidSQLiteの更新行が機能しない

    4. DBテストデータを生成する方法