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'