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'