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

MariaDBでのLENGTH()のしくみ

    MariaDBでは、LENGTH() 指定された文字列引数の長さを返す組み込みの文字列関数です。

    デフォルトモードの場合、文字列の長さはバイト単位で測定されます。ただし、Oracleモードの場合は、文字で測定されます。

    構文

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

    LENGTH(str)

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

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

    SELECT LENGTH('café');

    結果:

    +-----------------+
    | LENGTH('café')  |
    +-----------------+
    |               5 |
    +-----------------+

    この場合、文字列の長さは4文字でしたが、LENGTH() 返された5

    これは、最後の文字が2バイトを使用しており、デフォルトのSQLモード(私のsql_mode=DEFAULT)を使用しているためです。 )。デフォルトのSQLモードの場合、LENGTH() バイト数を返します。

    Oracleモード

    Oracleモードに切り替えると、LENGTH()になります (バイト数ではなく)文字列内の文字数だけを返します。

    セッションをOracleモードに切り替えましょう:

    SET SESSION sql_mode='ORACLE';

    それでは、前のLENGTH()を実行してみましょう。 もう一度例:

    SELECT LENGTH('café');

    結果:

    +-----------------+
    | LENGTH('café')  |
    +-----------------+
    |               4 |
    +-----------------+

    今回は、バイト数(5)ではなく文字数(4)を返します。

    Oracleモードの場合、LENGTH() CHAR_LENGTH()と同じ結果を返します およびその同義語、CHARACTER_LENGTH()

    CHAR_LENGTH()との比較 およびBIT_LENGTH()

    デフォルトモードに戻しましょう:

    SET SESSION sql_mode=DEFAULT;

    LENGTH()の簡単な比較を次に示します。 デフォルトモードの場合、CHAR_LENGTH() およびBIT_LENGTH() 文字列のビット数を返します:

    SELECT 
        LENGTH('อ'),
        CHAR_LENGTH('อ'),
        BIT_LENGTH('อ');

    結果:

    +---------------+--------------------+-------------------+
    | LENGTH('อ')   | CHAR_LENGTH('อ')   | BIT_LENGTH('อ')   |
    +---------------+--------------------+-------------------+
    |             3 |                  1 |                24 |
    +---------------+--------------------+-------------------+

    このタイ文字( )は3バイトを使用するため、LENGTH() 3を返します 。

    CHAR_LENGTH() 1を返します 、それはまだ1文字であり、BIT_LENGTH() ビット数を返します(24

    繰り返しますが、Oracleモードの場合は、LENGTH() CHAR_LENGTH()と同じものが返されます 。

    非文字列

    引数が文字列でない場合は、文字列に変換されます。

    数字を使用する別の例を次に示します。

    SELECT LENGTH(1234);

    結果:

    +--------------+
    | LENGTH(1234) |
    +--------------+
    |            4 |
    +--------------+

    ヌル引数

    nullを渡す nullを返します :

    SELECT LENGTH(null);

    結果:

    +--------------+
    | LENGTH(null) |
    +--------------+
    |         NULL |
    +--------------+

    引数がありません

    LENGTH()を呼び出す 引数を渡さないとエラーが発生します:

    SELECT LENGTH();

    結果:

    ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LENGTH'

    1. PL/SQLで日付範囲を反復処理する方法

    2. JavaFXMySQL接続例をお願いします

    3. SQL Server(T-SQL)で列の名前を変更する

    4. T-SQLとSQL