SQLで文字列の長さを取得

MySQLにおいて表題の通り。ド忘れしたのでメモしておく。

■ 環境

  • MySQL 3.6.5

■ SQL

カラムの型が”varchar“の時に下記のように取得した。

mysql> select length(カラム) from テーブル;

これで取得する対象のカラムに入っているデータが英数字等であれば単純に文字数が取得できる。しかし入っているデータが日本語等の文字であった場合かつテーブルの定義で”utf8“であったりすると、1文字が3byteなので3倍の数値が返ってきた。

ちなみにMySQLでは純粋に文字列数を取得するには”char_length“で返ってくるようだ。

mysql> select char_length(カラム) from テーブル;

こっちだとイメージ通りである。

ちなみに、、自身は”AWS Athena“で同じように”char_length“を使いたかったのだが、そんな関数はないとエラーになったので”length“を使用して実行する事ができた。

mysql> help length
Name: 'LENGTH'
Description:
Syntax:
LENGTH(str)

Returns the length of the string str, measured in bytes. A multi-byte
character counts as multiple bytes. This means that for a string
containing five two-byte characters, LENGTH() returns 10, whereas
CHAR_LENGTH() returns 5.
  :
mysql>
mysql> help char_length
Name: 'CHAR_LENGTH'
Description:
Syntax:
CHAR_LENGTH(str)

Returns the length of the string str, measured in characters. A
multi-byte character counts as a single character. This means that for
a string containing five two-byte characters, LENGTH() returns 10,
whereas CHAR_LENGTH() returns 5.
  :
mysql>

以上。