[CONCAT]
두 컬럼을 조합하여 새로운 튜플로 된 컬럼을 생성하는 방법은 `CONCAT` 또는 `||` 연산자를 사용하여 두 컬럼의 값을 합치는 것입니다. 예를 들어, `first_name`과 `last_name`이라는 두 개의 컬럼을 합쳐서 새로운 `full_name` 컬럼을 만들고 싶다면 다음과 같은 SQL 쿼리를 사용할 수 있습니다.
=> 튜플 만들때도 사용할 수 있음
```sql
SELECT CONCAT(first_name, ' ', last_name) AS full_name
FROM employees;
```
또는 SQL 표준에서는 `||` 연산자를 사용할 수 있습니다.
```sql
SELECT first_name || ' ' || last_name AS full_name
FROM employees;
```
이렇게 하면 `first_name`과 `last_name` 컬럼을 합쳐서 `full_name`이라는 새로운 컬럼을 생성하게 됩니다.
### 관련 SQL 코딩 문제
**문제 1:**
`employees`라는 테이블에 직원의 이름(first_name)과 성(last_name) 컬럼이 존재한다. 각 직원의 이름과 성을 합쳐서 `full_name`이라는 컬럼을 출력하라. 결과는 아래와 같은 형태로 출력되어야 한다.
```
full_name
-------------
John Doe
Jane Smith
...
```
**문제 2:**
`products` 테이블이 있고, `product_name`과 `category_name` 컬럼이 존재한다. 각 제품 이름과 카테고리 이름을 결합하여 `Product - Category` 형식으로 출력하는 SQL 쿼리를 작성하라.
**문제 3:**
`orders` 테이블에는 `order_id`와 `customer_name` 컬럼이 있다. 두 컬럼을 결합하여 `Order ID: customer_name` 형식으로 나타내는 쿼리를 작성하고, 이를 새로운 컬럼 `order_info`로 출력하라.
>> 답
문제1: select concat(first_name, ' ', last_name) as full_name from employees
문제2: select concat(product_name, ' - ', category_name) as product_category from products
문제3: select concat(order_id,': ',customer_name) as order_info from orders
[SUBSTRING]
[SUBSTRING_INDEX]
`SUBSTRING_INDEX` 함수는 지정된 구분자를 기준으로 문자열을 나누고, 특정 부분을 가져오는 MySQL 함수입니다.
```sql
SELECT SUBSTRING_INDEX('010-1234-5678', '-', 1);
```
이 쿼리의 결과는 `'010'`입니다.
`SUBSTRING_INDEX` 함수의 인자 의미는 다음과 같습니다:
- 첫 번째 인자 `'010-1234-5678'`: 처리할 문자열
- 두 번째 인자 `'-'`: 구분자로 사용할 문자열
- 세 번째 인자 `1`: 구분자를 기준으로 왼쪽에서부터 첫 번째 부분을 반환
따라서 `'010-1234-5678'`에서 `'-'`를 기준으로 첫 번째 부분인 `'010'`이 반환됩니다.
----------------
`SUBSTRING_INDEX` 함수에서 세 번째 인자에 음수를 사용하면 오른쪽부터 가져올 수 있습니다.
예를 들어, `'010-1234-5678'`에서 오른쪽부터 첫 번째 부분을 가져오려면 다음과 같이 작성할 수 있습니다:
```sql
SELECT SUBSTRING_INDEX('010-1234-5678', '-', -1);
```
이 쿼리의 결과는 `'5678'`입니다.
### 동작 원리
- 세 번째 인자에 `-1`을 넣으면 구분자 `'-'`를 기준으로 오른쪽에서 첫 번째 부분을 반환합니다.
- 예를 들어, `-2`로 설정하면 오른쪽에서 두 번째 부분(`'1234-5678'`)을 반환합니다.
'취준이랄까.. > SQLD' 카테고리의 다른 글
my sql, 정규표현식 (1) | 2024.10.31 |
---|---|
실수 가능, mysql, distinct (0) | 2024.10.31 |
union all 쿼리시 틀릴 수 있는 부분 (0) | 2024.10.31 |
[GROUP BY] 조건에 맞는 사용자와 총 거래금액 조회하기: 프로그래머스 (0) | 2024.04.19 |
[JOIN] FrontEnd 개발자 찾기: 프로그래머스 (0) | 2024.04.19 |