[회전] MySQL 중 함수 CONCAT 및 GROUPCONCAT 대응oracle의wmconcat

3999 단어
다음으로 이동:https://blog.csdn.net/jx_jy/article/details/81633275
1. concat () 함수 1.1 MySQL의 concat 함수는 하나 이상의 문자열을 연결할 수 있다. 예를 들어
mysql> select concat('10');
+--------------+
| concat('10') |
+--------------+
| 10           
+--------------+

mysql> select concat('11','22','33');
+------------------------+
| concat('11','22','33') |
+------------------------+
| 112233                 |
+------------------------+

Oracle의 concat 함수는 두 문자열만 연결할 수 있습니다
SQL> select concat('11','22') from dual;

1.2 MySQL의 concat 함수는 문자열을 연결할 때 그 중 하나가 NULL이면 NUL로 되돌아온다
mysql> select concat('11','22',null);
+------------------------+
| concat('11','22',null) |
+------------------------+
| NULL                   |
+------------------------+

Oracle의 concat 함수를 연결할 때, 문자열이 NULL이 아니면 NULL을 되돌려주지 않습니다
SQL> select concat('11',NULL) from dual;
CONCAT
--
11

  2、concat_ss () 함수, concat with separator, 연결 후 쉼표로 구분된 문자열 연결
mysql> select concat_ws(',','11','22','33');
 
+-------------------------------+
| concat_ws(',','11','22','33') |
+-------------------------------+
| 11,22,33                      |
+-------------------------------+

concat과 다른 것은, concatss 함수는 실행할 때 NULL 값으로 인해 NULL mysql>select concat 로 되돌아오지 않습니다ws(',','11','22',NULL); +-------------------------------+ | concat_ws(',','11','22',NULL) | +-------------------------------+ | 11,22                         | +-------------------------------+ 3、group_concat () 는 줄을 돌릴 수 있습니다. Oracle에는 이러한 함수가 없습니다. 완전한 문법은 다음과 같습니다 groupconcat([DISTINCT] 연결할 필드 [Order BY ASC/DESC 정렬 필드] [Separator '구분자']) 다음 예는 mysql> select * from aa;+------+----------+| id | name | +----+----| 1 | 10 | 1 | 20 | 2 | 20 | | | 3 | 3 | 500 | +------+6 rows in set(0.00sec) 3.1 id로 그룹화하여name 필드의 값을 한 줄로 인쇄하고 쉼표로 구분(기본값) mysql>select id, groupconcat(name) from aa group by id; +------+--------------------+ | id   | group_concat(name) | +------------------------------+| 1 | 10,20,20 | 20 | 3 | 200500 | +------+--------------------+3 rows in set(0.00sec) 3.2를 id로 그룹화하여name 필드의 값을 한 줄로 인쇄하고 mysql>select id, groupconcat(name separator ';') from aa group by id; +------+----------------------------------+ | id   | group_concat(name separator ';') | +------+----------------------------------+ |    1 | 10;20;20                         | |    2 | 20                               | |    3 | 200;500|+------+----------------------------------+3 rows in set(0.00sec) 3.3을 id로 그룹화하여 불필요한name 필드의 값을 한 줄에 인쇄하고 쉼표로 mysql>select id, groupconcat(distinct name) from aa group by id;   +------+-----------------------------+ | id   | group_concat(distinct name) | +----+---------------------+ | 1 | 10,20 | 20 | | 3 | 200500 | +-------------------------------+ 3 rows in set (0.00sec) 3.4를 id로 그룹화하여name 필드의 값을 한 줄에 인쇄하고 쉼표로 구분하여name로 거꾸로 mysql>select id,groupconcat(name order by name desc) from aa group by id;   +------+---------------------------------------+ | id   | group_concat(name order by name desc) | +------+---------------------------------------+ |    1 | 20,20,10                              | |    2 | 20                                    | |    3 | 500,200                               | +------+---------------------------------------+ 3 rows in set(0.00sec) 4,repeat() 함수로 문자열을 복제하는데 다음과 같이'ab'는 복제할 문자열을 나타내고 2는 복제할 부수를 나타내는 mysql>select repeat('ab', 2);+--------------+|repeat('ab', 2)|+----------+|abab|+------------------+1 row in set(0.00sec)은 mysql>select repeat('a', 2)와 같다.  +---------------+ | repeat('a',2) | +---------------+ | aa            | +---------------+

좋은 웹페이지 즐겨찾기