MySQL 연결 함수 CONCAT 의 사용 소감

앞의 몇 편의 글 은 MySQL 의 교체 함수(Replace),절 분 함수(SubString)를 소개 합 니 다.오늘 은 MySQL 의 전문 적 인'문자열'을 연결 하 는 함수 인 concat 를 살 펴 보 겠 습 니 다.규칙,좋 은 조언 과 생각 이 있 습 니 다.댓 글 에 적어 주세요.제 가 출근 해서 생선 을 만 질 때 여러분 과 함께 참 외 를 먹 겠 습 니 다~
1.concat 함수 와 관련 된 몇 가지 용법
1-1,함수:concat(str1,str2,...)
concat 함 수 는 보통 SELECT 조회 문법 에 사용 되 는데 반환 필드 내용 을 수정 하 는 데 사 용 됩 니 다.예 를 들 어 LOL 영웅 정보 표 는 다음 과 같 습 니 다.

mysql> select * from `LOL`;
+----+---------------+--------------+-------+
| id | hero_title  | hero_name  | price |
+----+---------------+--------------+-------+
| 1 | D       |        | 6300 |
| 2 | X       |        | 6300 |
| 3 | G       |        | 1350 |
| 4 | F       |        | 6300 |
| 5 | Z       |        | 6300 |
| 6 | W       |        |  450 |
| 7 | J       |        |  450 |
+----+---------------+--------------+-------+
7 rows in set (0.00 sec)
영웅 칭호-영웅 명칭 의 데 이 터 를 되 돌려 야 합 니 다.이것 은 concat 함 수 를 사 용 했 습 니 다.다음 과 같 습 니 다.

SELECT CONCAT(hero_title,' - ',hero_name) as full_name, price from `LOL`;

mysql> SELECT CONCAT(hero_title,' - ',hero_name) as full_name, price from `LOL`;
+------------------------------+-------+
| full_name          | price |
+------------------------------+-------+
| D     -          | 6300 |
| X     -          | 6300 |
| G     -          | 1350 |
| F     -          | 6300 |
| Z     -          | 6300 |
| W     -          |  450 |
| J     -          |  450 |
+------------------------------+-------+
7 rows in set (0.00 sec)
연 결 된 인자 에 NULL 이 있 으 면 NULL 을 되 돌려 줍 니 다.다음 과 같다.

SELECT CONCAT(hero_title,NULL,hero_name) as full_name, price from `LOL`;

mysql> SELECT CONCAT(hero_title,'NULL',hero_name) as full_name, price from `LOL`;
+-------------------------------+-------+
| full_name           | price |
+-------------------------------+-------+
| D    NULL         | 6300 |
| X    NULL         | 6300 |
| G    NULL         | 1350 |
| F    NULL         | 6300 |
| Z    NULL         | 6300 |
| W    NULL         |  450 |
| J    NULL         |  450 |
+-------------------------------+-------+
7 rows in set (0.00 sec)
在这里插入图片描述
죄 송 하지만 위 에 제 동생 이 쓴 것 입 니 다.정확 한 것 은 다음 과 같 습 니 다.

mysql> SELECT CONCAT(hero_title,NULL,hero_name) as full_name, price from `LOL`;
+-----------+-------+
| full_name | price |
+-----------+-------+
| NULL   | 6300 |
| NULL   | 6300 |
| NULL   | 1350 |
| NULL   | 6300 |
| NULL   | 6300 |
| NULL   |  450 |
| NULL   |  450 |
+-----------+-------+
7 rows in set (0.00 sec)
1-2,함수:concatws(separator,str1,str2,…)
  CONCAT_WS()함수 전 칭:CONCAT With Separator 는 CONCAT()의 특수 한 형식 입 니 다.첫 번 째 매개 변수(separator)는 다른 매개 변수의 구분자 입 니 다.구분자 의 위 치 는 연결 할 두 문자열 사이 에 있 습 니 다 , 。주의해 야 할 것 은:
   NULL, NULL; NULL, , NULL。자,우 리 는 여전히 위의 LOL 표 로 각 필드 를 연결 하여 쉼표 로 구분 합 니 다.

select concat_ws(',',hero_title,hero_name,price) as full_name, price from `LOL`;

mysql> select concat_ws(',',hero_title,hero_name,price) as full_name, price from `LOL`;
+---------------------------------+-------+
| full_name            | price |
+---------------------------------+-------+
| D    ,  ,6300       | 6300 |
| X    ,  ,6300       | 6300 |
| G    ,   ,1350      | 1350 |
| F    ,    ,6300     | 6300 |
| Z    ,  ,6300       | 6300 |
| W    , ,450        |  450 |
| J    ,  ,450       |  450 |
+---------------------------------+-------+
7 rows in set (0.00 sec)
구분자 뒤의 연결 매개 변수 가 NULL 일 때 무시 하고 전체 결과 에 영향 을 주지 않 습 니 다.다음 과 같 습 니 다.

select concat_ws(',',hero_title,NULL,hero_name) as full_name, price from `LOL`;

mysql> select concat_ws(',',hero_title,NULL,hero_name) as full_name, price from `LOL`;
+----------------------------+-------+
| full_name         | price |
+----------------------------+-------+
| D    ,         | 6300 |
| X    ,         | 6300 |
| G    ,         | 1350 |
| F    ,         | 6300 |
| Z    ,         | 6300 |
| W    ,         |  450 |
| J    ,         |  450 |
+----------------------------+-------+
7 rows in set (0.00 sec)
구분자 가 NULL 일 때 결 과 는 NULL 로 돌아 갑 니 다.다음 과 같 습 니 다.

select concat_ws(NULL,hero_title,hero_name,price) as full_name, price from `LOL`;

mysql> select concat_ws(NULL,hero_title,hero_name,price) as full_name, price from `LOL`;
+-----------+-------+
| full_name | price |
+-----------+-------+
| NULL   | 6300 |
| NULL   | 6300 |
| NULL   | 1350 |
| NULL   | 6300 |
| NULL   | 6300 |
| NULL   |  450 |
| NULL   |  450 |
+-----------+-------+
7 rows in set (0.00 sec)
1-3、함수:groupconcat(expr)
group_concat([DISTINCT]필드 이름[order by 정렬 필드 ASC/DESC][Separator'구분자'])
  group_concat 함 수 는 보통 group by 가 있 는 검색 어,group 에 사 용 됩 니 다.concat 는 일반적으로 검색 결과 필드 에 포 함 됩 니 다.
  혹시 groupconcat 함수 공식 이 복잡 해 보이 는데?우리 함께 보 자.위의 공식 에서[]괄호 는 선택 할 수 있 고 사용 할 수 있 는 지 없 는 지 를 나타 낸다.
4.567917.1.4.567914.연결 하 는 매개 변수 에 대해 재 활용 기능 을 지원 합 니 다
  • 2[DISTINCT]맞 춤 형 매개 변 수 는 정렬 기능 을 지원 합 니 다
  • 4.567917.3.4.567914.이것 은 잘 알 고 있 습 니 다.사용자 정의'구분자'를 지원 합 니 다.기본 값 을 구분자 로 설정 하지 않 으 면..자,이제 즐 거 운 테스트 코너 로 넘 어가 보 겠 습 니 다.이 LOL 표 로 왜 냐 고 묻 지 마 세 요.어쩌면 이것 이 청춘 일지 도 몰라!기억 나 는 그 해 밤 다섯 줄,대 룡 단 때 PC 방 정전...
    在这里插入图片描述
    또 주제 에서 벗 어 났 다.죄송합니다.
    
    mysql> select * from `LOL`;
    +----+---------------+--------------+-------+
    | id | hero_title  | hero_name  | price |
    +----+---------------+--------------+-------+
    | 1 | D       |        | 6300 |
    | 2 | X       |        | 6300 |
    | 3 | G       |        | 1350 |
    | 4 | F       |        | 6300 |
    | 5 | Z       |        | 6300 |
    | 6 | W       |        |  450 |
    | 7 | J       |        |  450 |
    +----+---------------+--------------+-------+
    7 rows in set (0.00 sec)
    『8195』장면 을 들 어 우 리 는 각 가격 대의 영웅 을 구분 해 야 한다.만약 group 을 사용 하지 않 는 다 면.concat 라면 order by 로 만 구분 할 수 있 을 것 같 습 니 다.
    
    select * from `LOL` order by price desc;
    
    mysql> select * from `LOL` order by price desc;
    +----+---------------+--------------+-------+
    | id | hero_title  | hero_name  | price |
    +----+---------------+--------------+-------+
    | 1 | D       |        | 6300 |
    | 2 | X       |        | 6300 |
    | 4 | F       |        | 6300 |
    | 5 | Z       |        | 6300 |
    | 3 | G       |        | 1350 |
    | 6 | W       |        |  450 |
    | 7 | J       |        |  450 |
    +----+---------------+--------------+-------+
    7 rows in set (0.00 sec)
    그런데 이렇게 하면 직관 적 이지 않 아 요.한 줄 다 보고 싶 어 요.어 떡 해요?
    
    SELECT GROUP_CONCAT(hero_title,' - ',hero_name Separator ',' ) as full_name, price 
     from `LOL` GROUP BY price ORDER BY price desc;
    이때 GROUPCONCAT 함 수 는 이 문 제 를 쉽게 해결 해 줍 니 다.봐,편 해~
    주석:여 기 는 제 가 맞 췄 습 니 다(herotitle,' - ‘,hero_name)이 세 개의 매개 변 수 는 구분자 가','로 설정 되 어 있 으 며,가격 에 따라 그룹 을 나 누고,가격 에 따라 배열 되 어 있 습 니 다.효 과 는 다음 과 같다.
    
    mysql> SELECT GROUP_CONCAT(hero_title,' - ',hero_name Separator ',' ) as full_name, price from `LOL` GROUP BY price ORDER BY price desc;
    +------------------------------------------------------------------------+-------+
    | full_name                               | price |
    +------------------------------------------------------------------------+-------+
    | D     -   ,X     -   ,F     -     ,Z     -        | 6300 |
    | G     -                                | 1350 |
    | W     -  ,J     -                         |  450 |
    +------------------------------------------------------------------------+-------+
    3 rows in set (0.00 sec)
    가격(price)에 따라 어 릴 때 부터 큰 순서 로 정렬 하면 외부 ORDER BY 를 제어 하면 됩 니 다.다음 과 같 습 니 다.
    
    SELECT GROUP_CONCAT(hero_title,' - ',hero_name Separator ',' ) as full_name, price 
      from `LOL` GROUP BY price ORDER BY price asc;
    
    mysql> SELECT GROUP_CONCAT(hero_title,' - ',hero_name Separator ',' ) as full_name, price from `LOL` GROUP BY price ORDER BY price asc;
    +-------------------------------------------------------------------------+-------+
    | full_name                                | price |
    +-------------------------------------------------------------------------+-------+
    | W     -  ,J     -                         |  450 |
    | G     -                                | 1350 |
    | D     -   ,X     -   ,F     -     ,Z     -        | 6300 |
    +-------------------------------------------------------------------------+-------+
    3 rows in set (0.00 sec)
    그럼 GROUPCONCAT 함수 의 order by 정렬 은 어떻게 사용 합 니까?hero 와 같은 맞 춤 형 필드 의 정렬 에 사 용 됩 니 다.title 정렬 연결 을 진행 합 니 다.다음 과 같 습 니 다.
    
    SELECT GROUP_CONCAT(hero_title,' - ',hero_name order by hero_title Separator ',' ) as full_name, price from `LOL` GROUP BY price ORDER BY price asc;
    
    mysql> SELECT GROUP_CONCAT(hero_title,' - ',hero_name order by hero_title Separator ',' ) as full_name, price from `LOL` GROUP BY price ORDER BY price asc;
    +-------------------------------------------------------------------------+-------+
    | full_name                                | price |
    +-------------------------------------------------------------------------+-------+
    | J     -   ,W     -                         |  450 |
    | G     -                                | 1350 |
    | D     -   ,F     -     ,X     -   ,Z     -        | 6300 |
    +-------------------------------------------------------------------------+-------+
    3 rows in set (0.00 sec)
      좋 습 니 다.MySQL 의 concat 조합 함수 가 좋 은 것 을 알 수 있 습 니 다.비슷 한 수요 나 곤 혹 스 러 울 때 생각 하 시기 바 랍 니 다!혹은 이 블 로 그 를 찾 아서 당신 을 도 울 수 있 습 니 다!
    MySQL 맞 춤 함수 CONCAT 의 사용 소감 을 자세히 알 아 보 는 이 글 은 여기까지 입 니 다.더 많은 MySQL 맞 춤 함수 CONCAT 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기