2024.06.26
그룹활동으로 SQL 코드카타 40번 ~ 43번 문제풀이 중 배웠던 것들!!

✳️ REGEXP (REGULAR EXPRESSION; 정규 표현식)
특정 규칙을 가진 문자열의 집합을 표현, 패턴을 사용하여 문자열을 처리
✔️ Matching
| Pattern | 기능 | 예시 | 설명 |
| . | 문자 하나 | "..." | 문자열의 길이가 세 글자 이상인 것을 찾음 |
| | | 또는 (OR). | 로 구분된 문자에 해당하는 문자열을 찾음 | "데이터|데이터" | ‘데이터’ 또는 ‘데이타’에 해당하는 문자열을 찾음 |
| [] | [] 안에 나열된 패턴에 해당하는 문자열을 찾음 | "[123]d" | 대상 문자열에서 ‘1d’ 또는 ‘2d’ 또는 ‘3d’인 문자열을 찾음 |
| ^ | 시작하는 문자열을 찾음 | "^안녕" | 대상 문자열에서 ‘안녕’으로 시작하는 문자열을 찾음 |
| $ | 끝나는 문자열을 찾음 | "잘가$" | 대상 문자열에서 ‘잘가’로 끝나는 문자열을 찾음 |
✔️ Number Limit
| Pattern | 기능 | 예시 | 설명 |
| * | 0회 이상 나타나는 문자 | "a*" | ‘a’가 0번 이상 등장하는 문자열을 찾음. ‘b’, ‘a’, ‘aa’ 모두 해당 |
| + | 1회 이상 나타나는 문자 | "국+" | ‘국’이 1번 이상 등장하는 문자열을 찾음. ‘한국’, ‘미역국’, ‘국거리’ 모두 해당 |
| {m,n} | m회 이상 n회 이하 반복되는 문자 | "치{1,2}" | ‘치’가 1회 이상 2회 이하 반복하는 문자열을 찾음. ‘치커리’, ‘치카치카’ 모두 해당 |
| ? | 0~1회 나타나는 문자 | "[가나다]?" | ‘가’ 또는 ‘나’ 또는 ‘다’가 0~1회 등장하는 문자열을 찾음. ‘가지마’, ‘나라’, ‘안녕’ 모두 해당 |
✔️ String group
| Pattern | 기능 | 예시 | 설명 |
| [A-z] 또는 [:alpha:] 또는 \a | 알파벳 대문자 또는 소문자인 문자열을 찾음 | "[A-z]+" | 대상 문자열에서 알파벳이 한 개 이상인 문자열을 찾음 |
| [0-9] 또는 [:digit:] 또는 \d | 숫자인 문자열을 찾음 | "^[0-9]+" | 한 개 이상의 숫자로 시작하는 문자열을 찾음 |
✔️ Not
| Pattern | 기능 | 예시 | 설명 |
| [^문자] | 괄호 안의 문자를 포함하지 않은 문자열을 찾음 | "[^길로그]" | ‘길’ 또는 ‘로’ 또는 ‘그’를 포함하지 않는 문자열을 찾음. ‘길가’, ‘로그’, ‘그리고’ 모두 제외 됨 |
[MySQL] REGEXP(Regular Expression(정규 표현식))
REGEXP는 LIKE를 이용한 검색과 달리 Regular Expression(정규 표현식)를 이용해 검색한다.REGEXP를 사용하면 SQL에서 정규표현식을 활용하여 기본 연산자보다 복잡한 문자열 조건을 걸어 데이터를 검색할
velog.io
✳️ 날짜 추출 함수
✔️ YEAR (컬럼) 함수
년도만 추출하고 싶을 때
select *
from 테이블명
where year(컬럼명) = 2024 ✔️ MONTH (컬럼) 함수
월만 추출하고 싶을 때
SELECT *
FROM 테이블명
WHERE month(컬럼명) = '2'
✔️ DAYOFMONTH (컬럼) 함수
일만 추출하고 싶을 때
select *
from 테이블명
where DAYOFMONTH(컬럼명) = 5
✔️ 오늘날짜 연관 (DATADIFF, CURDATE)
DATADIFF (A, B) : A날짜에서 B날짜를 빼줌
CURDATE ( ) : 오늘 날짜 추출
SELECT 컬럼1,
컬럼2,
DATEDIFF(CURDATE(), 컬럼3)
FROM 테이블명ㄴ테이블에서 컬럼1,컬럼2, 오늘날짜에서 컬럼3날짜를 뺀 값을 추출해줘
✳️ 반올림, 올림, 내림, 버림
✔️ ROUND (숫자/컬럼이름/집계함수결과값, 반올림할 위치, [반올림여부])
정해진 자릿수에 따라 반올림
반올림여부 : 표시한 것이 0 또는 생략할 경우 반올림, 음수값일 경우 버림을 적용
(원래는 올림을 해야하는 데 반올림 여부에 음수값을 적용하면 버리게 된다)

-- 소수점 반올림
SELECT ROUND(940.13, 1) --940.10
SELECT ROUND(940.16, 1) --940.20
SELECT ROUND(940.16, 1, -1) --940.10
-- 자리수 반올림
SELECT ROUND(941, -1) --940
SELECT ROUND(946, -1) --950
SELECT ROUND(946, -2) --900
SELECT ROUND(946, -1, -1) --940
✔️ CEILING ( )
소수점 이하를 가까운 '정수'로 올림
SELECT CEILING(940.16) --941
SELECT CEILING(942.16) --943
✔️ FLOOR (숫자)
소수점 이하를 가장 가까운 '정수'로 버림
SELECT FLOOR(940.16) --940
SELECT FLOOR(942.16) --942
✔️ TRUNCATE (숫자/컬럼이름/집계함수결과값, 버림할 자릿수)
이것은 사실상 위의 모든 속성과 다르다고 할 수 있는데, 그냥 n째 자리까지 남기고 아예 제거를 해버리기 때문이다. 그래서 결과는 아래와 같다.
SELECT TRUNC(940.16, 0) --940TRUNCATE는 DELET나 DROP과 비슷한 용도로 주로 쓴는 것 같다.
참고 내용은 아래 주소
https://m.blog.naver.com/regenesis90/222199484494

'📒 Today I Learn > 🐬 SQL' 카테고리의 다른 글
| [SQL] 문자열에 공백 넣기, CONCAT_WS, NULL과 공백값 구분, NULLIF와 IFNULL (0) | 2024.07.02 |
|---|---|
| [SQL] Window 함수 (0) | 2024.07.01 |
| [SQL 기초] 5주차 강의 (0) | 2024.06.24 |
| [SQL 기초] 4주차 강의 (0) | 2024.06.24 |
| [SQL 기초] 3주차 강의 (1) | 2024.06.22 |