SQLの文字列関数
下準備
code:sql
CREATE TABLE SampleStr
(str1 VARCHAR(40),
str2 VARCHAR(40),
str3 VARCHAR(40));
BEGIN TRANSACTION;
INSERT INTO SampleStr (str1, str2, str3) VALUES ('あいう', 'えお' , NULL);
INSERT INTO SampleStr (str1, str2, str3) VALUES ('abc' , 'def' , NULL);
INSERT INTO SampleStr (str1, str2, str3) VALUES ('山田' , '太郎' , 'です');
INSERT INTO SampleStr (str1, str2, str3) VALUES ('aaa' , NULL , NULL);
INSERT INTO SampleStr (str1, str2, str3) VALUES (NULL , 'あああ', NULL);
INSERT INTO SampleStr (str1, str2, str3) VALUES ('@!#$%', NULL , NULL);
INSERT INTO SampleStr (str1, str2, str3) VALUES ('ABC' , NULL , NULL);
INSERT INTO SampleStr (str1, str2, str3) VALUES ('aBC' , NULL , NULL);
INSERT INTO SampleStr (str1, str2, str3) VALUES ('abc太郎Y', 'abc' , 'ABC');
INSERT INTO SampleStr (str1, str2, str3) VALUES ('abcdefabc','abc' , 'ABC');
INSERT INTO SampleStr (str1, str2, str3) VALUES ('ミックマック', 'ッ', 'っ');
COMMIT;
いちいちキーワードを大文字入力するのが面倒なので、以下小文字
code:sql
文字列1 || 文字列2
3文字以上も可能
code:sql
文字列1 || 文字列2 || 文字列3
code:sql
select str1, str2, str1 || str2 as str_concat from samplestr ;
NULLを足すと結果もNULLになる
LENGTH(文字列)で文字列長を取得する
code:sql
LENGTH(文字列)
DBMSによってはバイト数を戻す
MySQLはバイト数
MySQLで文字列長を取得したい場合はCHAR_LENGTH(文字列)を使用する
LOWER(文字列)で小文字化、UPPER(文字列)で大文字化
code:sql
select str1, lower(str1) as low_str
from samplestr
where str1 in ('ABC', 'aBC', 'abc', '山田');
REPLACEで文字列の置換
code:sql
REPLACE(対象文字列, 置換前の文字列, 置換後の文字列)
もっと書き下すと
code:sql
REPLACE(この文字列の, この部分を, こう替えたい)
code:sql
select str1, str2, str3, replace(str1, str2, str3) as rep_str
from samplestr;
SUBSTRINGで文字列を切り出す
code:sql
SUBSTRING(対象文字列 FROM 切り出し開始位置 FOR 切り出す文字数)
3文字から2文字(つまり3文字目と4文字目)を切り出す時はこうなる
code:sql
select str1, substring(str1 from 3 for 2) as sub_str
from samplestr;