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 | 기능 | 예시 | 설명 |
[^문자] | 괄호 안의 문자를 포함하지 않은 문자열을 찾음 | "[^길로그]" | ‘길’ 또는 ‘로’ 또는 ‘그’를 포함하지 않는 문자열을 찾음. ‘길가’, ‘로그’, ‘그리고’ 모두 제외 됨 |
✳️ 날짜 추출 함수
✔️ 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) --940
TRUNCATE는 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 |