MySQL 쿼리 스플라이싱
MySQL을 사용하여 쿼리할 때 여러 필드나 여러 테이블의 필드를 스플라이싱해야 하는 경우가 있습니다. 이 경우 MySQL에서 제공하는 문자열 스플라이싱 기능을 사용하여 작동할 수 있습니다. 일반적으로 사용되는 문자열 연결 함수에는 CONCAT, CONCAT_WS 및 GROUP_CONCAT이 있습니다.
CONCAT 함수는 두 개 이상의 문자열 또는 필드를 연결하는 데 사용됩니다. 구문은 다음과 같습니다.
CONCAT(string1, string2, ...)
여기서, string1, string2...는 연결할 문자열 또는 필드를 나타내며 상수일 수 있습니다. 열 이름, 표현식, 함수 등 예를 들어 직원의 이름과 직위를 찾으려면 다음 문을 사용할 수 있습니다.
SELECT CONCAT(last_name, ' ', first_name) AS name, job_title FROM employees
여기서 CONCAT 함수는 last_name과 first_name을 연결하고 쿼리 결과의 필드 이름으로 공백으로 구분합니다. 실행 결과는 다음과 같습니다.
name | job_title |
---|---|
Geoni Bakewell | Production Manager |
Lemuel Marmie | Shipping Manager |
Lino Uselman | 엔지니어 |
Honey Tunney | Sales Manager |
... | ... |
CONCAT_WS 함수도 문자열 연결에 사용되지만 CONCAT 함수와 달리 구분 기호를 지정할 수 있습니다. , 구문은 다음과 같습니다.
CONCAT_WS(separator, string1, string2, ...)
그중 구분 기호는 구분 기호를 나타내며 문자열1, 문자열2...는 연결할 문자열 또는 필드를 나타내며 여러 문자열은 쉼표로 구분됩니다. 예를 들어 직원의 전체 이름과 이메일 주소를 찾으려면 다음 명령문을 사용할 수 있습니다.
SELECT CONCAT_WS(' ', first_name, last_name) AS full_name, email FROM employees
여기서 CONCAT_WS 함수는 공백을 구분 기호로 사용하여 쿼리 결과에서 first_name과 last_name을 필드 full_name으로 연결합니다. 실행 결과는 다음과 같습니다:
full_name | |
---|---|
Geoni Bakewell | gbakewell@classicmodelcars.com |
Lemuel Marmie | lmarm ie@classic modelcars.com |
Lino Uselman | luselman @classicmodelcars.com |
Honey Tunney | htunney@classicmodelcars.com |
... | ... |
GROUP_CONCAT 함수는 결합에 사용됩니다. 여러 필드 또는 레코드의 여러 A 필드가 문자열로 연결되고 구문은 다음과 같습니다.
GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]] [SEPARATOR str_val])
여기서 expr은 연결될 열 또는 표현식을 나타내며 ORDER BY 및 SEPARATOR는 각각 선택 사항인 정렬 및 구분 기호를 나타냅니다. 기본적으로 GROUP_CONCAT 함수에 의해 반환되는 문자열에는 길이 제한이 있으며 이는 group_concat_max_len 매개변수를 설정하여 변경할 수 있습니다.
예를 들어, 각 부서의 모든 직원의 이름을 쿼리하고 이를 쉼표로 구분된 문자열로 연결하려면 다음 명령문을 사용하면 됩니다.
SELECT department, GROUP_CONCAT(last_name ORDER BY employee_number ASC SEPARATOR ', ') AS employee_names FROM employees GROUP BY department
여기서 GROUP_CONCAT 함수는 last_name을 직원 번호 순으로 정렬하고, 이를 정렬합니다. 쿼리 결과의 Employee_names 필드로 공백으로 구분된 쉼표를 사용합니다. 실행 결과는 다음과 같습니다:
department | employee_names |
---|---|
Admin | Murphy, Patterson, Bondur, Ferrante, Firrelli |
Customer Service | 티셍, 바나프, 폰 ^^ ^^^^ |
Finance | Bow, Firrelli, Patterson, Tseng |
... | ... |
MySQL 쿼리 프로세스에서는 다음을 수행해야 하는 경우가 많습니다. 여러 필드를 쿼리하거나 여러 테이블의 필드를 연결합니다. 이 함수를 구현할 때 MySQL은 두 개 이상의 문자열을 연결하고, 여러 문자열을 연결하고 지정된 구분 기호로 구분하고, 여러 필드를 문자열로 결합하는 데 사용되는 CONCAT, CONCAT_WS 및 GROUP_CONCAT의 세 가지 문자열 연결 함수를 제공합니다. 이러한 기능을 사용하면 데이터 처리가 크게 촉진되고 쿼리 효율성이 향상됩니다.
위 내용은 mysql 쿼리 접합의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!