○文字列処理関数
・文字列の長さ(length, char_length)
例) mysql> select length('abcde') as abcde, -> length('あいうえお') as あいうえお, -> char_length('あいうえお') as cl_あいうえお; +-------+------------+---------------+ | abcde | あいうえお | cl_あいうえお | +-------+------------+---------------+ | 5 | 10 | 5 | +-------+------------+---------------+
・大文字、小文字の変換(upper または ucase, lower または lcase)
http://www.sql-reference.com/string/upper_lower.htmlも参考
例) mysql> select upper('abCdE'), lower('abCdE'); +----------------+----------------+ | upper('abCdE') | lower('abCdE') | +----------------+----------------+ | ABCDE | abcde | +----------------+----------------+ mysql> select ucase('abCdE'), lcase('abCdE'); +----------------+----------------+ | ucase('abCdE') | lcase('abCdE') | +----------------+----------------+ | ABCDE | abcde | +----------------+----------------+
・文字列から抜き出す(left, right, substring)
例) mysql> select left('abcde',3) as left3, -> right('abcde',2) as right2, -> substring('abcde',2,3) as sub2_3; +-------+--------+--------+ | left3 | right2 | sub2_3 | +-------+--------+--------+ | abc | de | bcd | +-------+--------+--------+
○集約(グループ)関数
集約関数(count, sum, avg, max,min)
(テスト用テーブル) mysql> select * from test1; +------+--------+ | id | moji | +------+--------+ | 1 | abc | | 2 | abcde | | 3 | test1 | | 4 | test2 | | 5 | test3 | | 6 | hoge1 | | 7 | hoge2 | | 8 | 1_test | | 9 | 2_test | | 10 | NULL | +------+--------+ 例) mysql> select count(id), sum(id), avg(length(moji)) from test1; +-----------+---------+-------------------+ | count(id) | sum(id) | avg(length(moji)) | +-----------+---------+-------------------+ | 10 | 55 | 5.0000 | +-----------+---------+-------------------+
●おまけ
“moji”の長さが最大の行を表示しようとしてみたが、
mysql> select * from test1 where length(moji) = max(length(moji)); ERROR 1111 (HY000): Invalid use of group function
エラーが出ました。
原因は、グループ関数は、whereより後に処理されるので、
where処理の時点ではmax(length(moji))の結果がないため。
それをやりたいときは、
先に最大値を調べて、数値で指定すればいいのかな?
mysql> select max(length(moji)) from test1; +-------------------+ | max(length(moji)) | +-------------------+ | 6 | +-------------------+ mysql> select * from test1 where length(moji) = 6; +------+--------+ | id | moji | +------+--------+ | 8 | 1_test | | 9 | 2_test | +------+--------+