MySQL
[MySQL] MySQL 주요 문법 및 함수 정리 - 흐름 제어/패턴 매칭/타입 변환
se-mumu
2023. 5. 13. 17:03
WITH RECURSIVE
- WITH 구문은 메모리 상에 가상의 테이블을 저장할 때 사용됨
WITH RECURSIVE 테이블명 AS (
SELECT 초기값 AS 컬럼별명1
UNION ALL
SELECT 컬럼별명1 계산식 FROM 테이블명 WHERE 제어문
)
WITH RECURSIVE T1 AS (
SELECT 0 AS HOUR
UNION ALL
SELECT HOUR+1
FROM T1
WHERE(HOUR < 23)
)
흐름 제어
CASE
- 값을 서로 비교하거나, 표현식의 논리 값에 따라 다른 값을 반환
SELECT
CASE value
WHEN [compare_value] THEN result
[WHEN [compare_value] THEN result] ...
[ELSE result]
END
# 또는
CASE
WHEN [condition] THEN result
[WHEN [condition] THEN result] ...
[ELSE result]
END
# 예시
SELECT CASE 0
WHEN 0 THEN 'zero'
WHEN 1 THEN 'one'
ELSE 'more'
END
IF()
- 첫 번째 인수로 전달 받은 표현식의 논리 값에 따라 다른 값을 반환
SELECT
IF(expr1, expr2, expr3)
# 예시
SELECT IF(0 < 1, 'yes', 'no')
IFNULL()
- 첫 번째로 인수를 전달 받은 값이 NULL 인지 아닌지를 검사하여 다른 값을 반환
# NULL이 아니면 expr1 그 자체 반환, 아니면 expr2 반환
SELECT
IFNULL(expr1, expr2)
# 예시
SELECT IFNULL(NULL, "전달받은 값이 null입니다')
NULLIF()
- 인수로 전달 받은 두 값이 서로 같은 지를 검사하여 다른 값을 반환
# expr1과 expr2의 값이 같으면 null 반환, 아니면 expr1 반환
SELECT
NULLIF(expr1, expr2)
# 예시
SELECT NULLIF(3,3);
패턴 매칭
와일드 카드
- 문자열 내에서 임의의 문자나 문자열을 대체하기 위해 사용되는 기호
LIKE
- 특정 패턴을 포함하는 데이터만을 검색하기 위해 사용
# 예시
SELECT * FROM Reservation
WHERE Name LIKE '장%';
REGEXP
- 정규 표현식을 토대로 하는 패턴 매칭 연산 제공
# 예시
# Name 필드의 값이 '홍'으로 시작하거나 '산'으로 끝나는 레코드 선택
SELECT * FROM Reservation
WHERE Name REGEXP '^홍|산$';
타입 변환
CAST()
- 인수로 전달 받은 값을 명시된 타입으로 변환하여 반환
- 반환하고자 하는 타입을 AS 절을 이용하여 직접 명시 가능
SELECT CAST(expr AS type)
# 예시
SELECT 4 / CAST('2' AS UNSIGNED);
# 문자열 타입과 정수 타입이 수행한 나눗셈 연산의 결과는 정수 타입으로 반환됨
# 그러나 정수 타입끼리 나눗셈 연산을 한 결과는 실수 타입으로 반환됨
# 따라서 문자열 타입의 데이터를 CAST() 함수로 타입 변환 해야 올바른 결과 나옴
- 타입 종류
- BINARY
- CHAR
- DATE
- DATETIME
- TIME
- DECIMAL
- JSON (MySQL 5.7.8부터 제공)
- NCHAR
- SIGNED [INTEGER]
- UNSIGNED [INTEGER]