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]