concatとconcat_ws()の違いとMySQLのいくつかの実用的な文字列関数
6524 ワード
concat()関数
1 MySQLのconcat関数は、1つ以上の文字列に接続できます.
Oracleのconcat関数は2つの文字列しか接続できません.多くも少なくもできません.
2 MySQLのconcat関数は文字列を接続するときに、そのうちの1つがNULLであればNULLを返します
Oracleのconcat関数が接続されている場合、NULLでない文字列がある限り、NULLは返されません.
concat_ws()関数、concat with separator、すなわちセパレータ付き文字列接続を表す
concatとは違ってconcat_ws関数は、実行時にNULL値のためにNULLを返さない
group_concat()
使用可能な行を並べ替える
完全な構文は次のとおりです.
group_concat([DISTINCT]接続するフィールド[Order BY ASC/DESCソートフィールド][Separator'セパレータ])
例:
repeat()関数は文字列をコピーするために使用され、以下の「ab」はコピーする文字列を表し、2はコピーする部数を表す
1 MySQLのconcat関数は、1つ以上の文字列に接続できます.
select concat('10');//10
select concat('11','22','33');//112233
Oracleのconcat関数は2つの文字列しか接続できません.多くも少なくもできません.
select concat('11','22') from dual;
2 MySQLのconcat関数は文字列を接続するときに、そのうちの1つがNULLであればNULLを返します
select concat('11','22',null);//null
Oracleのconcat関数が接続されている場合、NULLでない文字列がある限り、NULLは返されません.
select concat('11',NULL) from dual;//11
concat_ws()関数、concat with separator、すなわちセパレータ付き文字列接続を表す
select concat_ws(',','11','22','33');//11,22,33
select concat_ws('|','11','22','33');//11|22|33
select concat_ws('*','11','22',NULL);//11*22
concatとは違ってconcat_ws関数は、実行時にNULL値のためにNULLを返さない
group_concat()
使用可能な行を並べ替える
完全な構文は次のとおりです.
group_concat([DISTINCT]接続するフィールド[Order BY ASC/DESCソートフィールド][Separator'セパレータ])
例:
create table aa(
id int,
name VARCHAR(255)
);
insert into aa values(1,10);
insert into aa values(1,10);
insert into aa values(1,20);
insert into aa values(1,30);
insert into aa values(3,30);
insert into aa values(5,60);
insert into aa values(5,90);
insert into aa values(6,990);
1 id , name , ( )
select id,group_concat(name) from aa group by id;
2 id , name ,
select id,group_concat(name separator ';') from aa group by id;
3 id , name ,
select id,group_concat(distinct name separator ';') from aa group by id;
4 id , name ,* , name
select id,group_concat(name order by name desc separator "*") from aa group by id;
repeat()関数は文字列をコピーするために使用され、以下の「ab」はコピーする文字列を表し、2はコピーする部数を表す
select repeat('ab',2);//abab
select repeat('a',2);//aa