[백문이불여일타] 고급 SQL 2
5. 정규표현식 (Regular Expression)
문자열에서 특정 패턴을 찾아내는 것
예시) 자음/모음으로 시작, 문자열에 숫자 3개 이상, 이메일 패턴 등
REGEXP '^[string].*'
^ : 시작
.* : 뒤에 어떤 것이 와도 매치 = LIKE %
\d : 어떤 숫자든 매치
-> SQL은 대소문자 구별 안 함 (파이썬 자바 등 다른 언어는 구별함)
연습문제
1) 모음으로 시작하고 끝나는 문자열?
REGEXP ' ^[aeiou].*[aeiou]$ '
2) 모음으로 시작하지 않는 문자열?
NOT REGEXP '^[aeiou]'
6. 사용자 정의 함수
CREATE FUNCTION function_name (parameter_name, data_type)
RETURNS data_type (DETERMINISTIC)
BEGIN
DECLARE variable_name data_type;
SET;
RETURN (Query) / variable_name;
END
SELECT function_name (parameter)
- 파라미터 여러 개 가능
예시: CREATE FUNCTION add (x, y)
RETURNS int
- DETERMINISTIC : input value 가 같으면 output value는 항상 같음
호출할 때 마다 결과 값 다르게 할거면 X
- BEGIN-END에서 RETURN은 반드시 필요!
중간에 변수를 선언 필요하면 DECLARE 와 SET
세미콜론 반드시 써야 함
- 조건문
CASE WHEN ~ END
IF 함수
IF 문 -> begin ~ end
번외) LIMIT 심화
SELECT * FROM table LIMT 5, 10
= row 6 ~ 15
= 5까지는 제외하고 그 다음부터 10개 뽑기
SELECT * FROM table LIMT N, 1
= SELECT * FROM table LIMT 1 OFFSET N
= row n+1
= 앞에서 n개는 지우고 그 다음 1개를 가져와라