concatとconcat_ws()の違いとMySQLのいくつかの実用的な文字列関数

6524 ワード

concat()関数
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