쿼리로 작업할 때 데이터베이스에서 원시 데이터를 가져와 다른 곳에서 사용하기 위해 다른 방식으로 다시 포맷해야 하는 경우가 있습니다. 이 기사에서는 쿼리에서 문자열 유형으로 작업하는 데 도움이 되는 MySQL의 몇 가지 함수를 살펴봅니다.
스키마 구축
이 섹션은 이 게시물에서 다루는 SQL 개념을 설명하기 위해 빠른 스키마를 준비하는 데 전념합니다. 우리는 기능에 MySQL을 사용합니다. 구문 사용과 검색 쿼리 실행을 연습하려면 SQL Fiddle을 사용하는 것이 좋습니다. 여기에서 다른 관계형 데이터베이스에서 쿼리를 테스트할 수도 있습니다.
표 생성 및 값 삽입
CREATE TABLE birthdays ( name varchar(200) NOT NULL, birthday varchar(10) NOT NULL ); INSERT INTO birthdays (name, birthday) VALUES("Jane", "11/20/1993"); INSERT INTO birthdays (name, birthday) VALUES("Duncan", "01/15/1987"); INSERT INTO birthdays (name, birthday) VALUES("Lucas", "07/21/1996"); INSERT INTO birthdays (name, birthday) VALUES("Alexa", "12/31/1988");
맨 위 네 줄은 "생일" 테이블을 만듭니다. "이름" 및 "생일" 열이 있습니다. 나머지는 데이터베이스에 값을 삽입합니다. 쿼리문을 작성할 때 이것을 사용합니다.
테이블에서 기본 쿼리를 실행하면 쿼리 문과 결과가 다음과 같이 표시됩니다.
SELECT name, birthday FROM birthdays;
결과:
이름 | 생일 |
크리스 | 1993년 11월 20일 |
던컨 | 1987년 1월 15일 |
루카스 | 1996년 7월 21일 |
알렉사 | 1988년 12월 31일 |
쿼리 문 작성
CONCAT()
CONCAT()
함수는 인수를 하나의 문자열로 결합한 후 결과를 반환합니다. 최소한 하나의 인수가 있지만 여러 기능이 있을 수 있습니다. 함수의 인수는 다음 중 하나일 수 있습니다.
- 이진 문자열 – 인수 중 하나라도 이진 문자열이면 반환 값은 이진 문자열입니다.
- 비이진 문자열 – 일반적인 문자열 값입니다. 모든 인수가 이진이 아닌 문자열 값이면
CONCAT()
이진이 아닌 문자열 값을 반환합니다.
- 숫자 – 하나의 입력이 숫자 유형이면 다른 인수와 결합되기 전에 이진이 아닌 문자열로 강제 변환됩니다.
- 널 – NULL 값이 있는 경우 해당 값은 단순히 무시됩니다.
형식 구문은 다음과 같습니다.
참가자의 81%는 부트캠프에 참석한 후 기술 직업 전망에 대해 더 자신감을 느꼈다고 말했습니다. 지금 부트캠프에 참여하십시오.
부트캠프 졸업생은 부트캠프 시작부터 첫 직장을 찾는 데까지 6개월도 채 걸리지 않았습니다.
CONCAT( <str value 1>, <str value 2>, [ … <str value N> ]);
함수임을 나타내기 위해 한 쌍의 괄호와 함께 CONCAT 키워드를 사용합니다. 괄호 안에는 N개의 입력 문자열이 있습니다. 다음은 MySQL을 사용한 모습입니다.
SELECT CONCAT(name, " ", birthday) AS Result FROM birthdays;
이름, 공백 문자 및 생일을 연결하여 반환 값을 "선택"하고 "결과"라는 이름을 할당합니다.
이 쿼리의 결과는 다음과 같습니다.
결과 |
크리스 1993년 11월 20일 |
던컨 1987년 1월 15일 |
루카스 1996년 7월 21일 |
알렉사 1988년 12월 31일 |
이 결과를 스키마 작성 섹션에서 테스트한 원래 쿼리 문과 비교하십시오. 어떻게 다른가요? 주어진 방식이 아닌 이런 방식으로 데이터를 설정하면 어떤 이점이 있습니까?
반드시 맞고 틀린 답은 없습니다. 애플리케이션에서 이 데이터를 어떻게 활용하느냐가 관건입니다.
CONCAT_WS()
CONCAT_WS()
함수는 CONCAT()
와 동일합니다. 그러나 함수에는 원래 CONCAT()
에 없는 필수 첫 번째 인수가 있습니다. 함수. 이 인수는 함수의 나머지 인수 사이에 있는 구분 기호입니다. CONCAT()
의 나머지 규칙 적용하다.
형식 구문은 다음과 같습니다.
CONCAT_WS(<separator>, <str value 1>, <str value 2>, [ … <str value N> ]);
CONCAT_WS()
를 사용합니다. 함수임을 나타내는 한 쌍의 괄호가 있는 키워드입니다. 괄호 안의 첫 번째 인수는 각 입력 문자열 사이에 있는 구분 기호입니다. 나머지 인수는 함께 결합한 문자열입니다. 다음은 MySQL을 사용한 모습입니다.
SELECT CONCAT_WS(", ", name, birthday) AS Result FROM birthdays;
결과는 각각의 다른 인수 사이에 있는 첫 번째 인수와 문자열 연결입니다.
결과 |
크리스, 1993년 11월 20일 |
던컨 1987년 1월 15일 |
루카스 1996년 7월 21일 |
알렉사 1988년 12월 31일 |
CONCAT()
처럼 함수, CONCAT_WS()
함수는 Result라는 열 하나만 반환합니다. 여기서 값은 구분 기호 문자로 연결된 입력 문자열입니다.
결론
이 기사에서는 SQL CONCAT()
를 다룹니다. 및 CONCAT_WS()
MySQL에서의 사용과 관련하여 기능합니다. 다른 관계형 데이터베이스는 고유한 SQL 특성을 가질 수 있으므로 다른 관계형 데이터베이스를 사용할 때 구문에 약간의 차이가 있을 수 있다는 점에 유의하십시오. 기능의 개념은 동일하지만 표현이 다를 수 있습니다.