1. 문자 함수
[ ] 는 옵션
1-1 CHR(ASCII코드)
ASCII코드를 문자로 변환
ex) CHR(65)
= 'A'
1-2 LOWER(문자열)
문자열을 소문자로 변환
ex) LOWER('Hello')
= 'hello'
1-3. UPPER(문자열)
문자열을 대문자로 변환
ex) UPPER('Hello')
= 'HELLO'
1-4. LTRIM(문자열,[특정문자])
특정문자가 없으면 좌측 공백을 제거
특정문자가 있으면 좌측부터 한글자씩 특정 문자와 비교 후 제거
ex ) LTRIM(' Hello')
= 'Hello'
ex ) LTRIM('Hello','e')
= 'Hllo'
1-5. RTRIM(문자열,[특정문자])
특정문자가 없으면 우측 공백을 제거
특정문자가 있으면 우측부터 한글자씩 특정 문자와 비교 후 제거
ex ) RRIM('Hello ')
= 'Hello'
ex ) RRIM('Hello','e')
= 'Hllo'
1-6. TRIM([위치][특정문자][FROM]문자열)
옵션이 없으면 좌우측 공백을 제거
위치(LEADING or TRAILING or BOTH)로부터 한글자씩 특정 문자와 비교 후 제거
* TRIM의 경우 특정문자는 한글만 가능
ex ) TRIME(' Hello ')
= 'Hello'
ex ) TRIME(TRAILING 'o' FROM 'Hello')
= 'Hell'
※ [ TRIM, LTRIM, RTRIM ] 는 SQL server(MSSQL)의 경우 공백 제거만 가능함
mariaDB 도 동일하지 않을까 생각함
1-7. SUBSTR(문자열,시작점,[길이]) ※ 시작점 != 인덱스
문자열의 원하는 부위를 잘라서 반환
길이가 없으면 끝까지, 있으면 해당 길이까지 반환
ex ) SUBSTR('Hello',2)
= 'ello'
ex ) SUBSTR('Hello',2,2)
= 'el'
1-8. LENGTH(문자열)
문자열의 길이를 반환
ex ) LENGTH('Hello')
= 5
1-9. REPLACE(문자열,변경전문자열,[변경후문자열])
문자열에 특정 문자열을 변경
변형후문자열이 없다면 특정 문자열 제거
ex ) REPLACE('Hello','e')
= 'Hllo'
ex ) REPLACE('Hello','e','z')
= 'Hzllo'
2. 숫자 함수
2-1. ABS(숫자)
숫자의 절대값을 반환
ex ) ABS(-10)
= 10
2-2. SIGN(숫자)
숫자의 부호를 반환 ( 양수면 1, 음수면 -1)
ex ) SIGN(-50)
= -1
2-3. ROUND(숫자,[자릿수])
숫자를 지정된 소수점 자릿수까지 반올림하여 반환
ex ) ROUND(163.76)
= 164
ex ) ROUND(163.76,1)
= 163.8
ex ) ROUND(163.76,-2)
= 200
2-4. TRUNC(숫자,[자릿수])
숫자를 지정된 소수점 자릿수까지 버림하여 반환
ex ) TRUNC(163.76)
= 163
ex ) TRUNC(163.76,1)
= 163.7
ex ) TRUNC(163.76,-2)
= 100
2-5. CEIL(숫자)
소수점 이하의 수를 올림하여 정수로 반환
ex ) CEIL(72.86)
= 73
ex ) CEIT(-33.4)
= 33
2-6. FLOOR(숫자)
소수점 이하의 수를 버림하여 정수로 반환
ex ) FLOOR(72.86)
= 72
ex ) FLOOR(-33.4)
= 34
2-7. MOD(숫자1,숫자2)
숫자1을 숫자2로 나눈 값을 반환
ex ) MOD(15,7)
= 1
ex ) MOD(15,-4)
= 3
3. 날짜함수
3.1 SYSDATE
현재의 연,월,일,시,분초를 반환
ex ) SYSDATE
= 2024-02-15 13:31:31
3.2 EXTRACT(단위 FROM 날짜)
날짜의 특정 단위를 반환
* 단위 (YEAR, MONTH, DAY, HOUR, MINUTE, SECOND)
ex ) EXTRACT(YEAR FROM SYSDATE)
= 2024
3.3 ADD_MONTHS(날짜,특정개월수)
날짜데이터에 특정개월수를 더한 날짜를 반환
ex ) ADD_MONTHS(SYSDATE, 3)
= 2024-05-15 13:31:31
4. 변환함수
4-1. 형변환
명시적 형변환 : 변환 함수를 사용하여 데이터유형을 변환
암시적 형변환 : 데이터베이스가 내부적으로 알아서 데이터유형을 변환
\* 성능 저하 및 에러가 발생할 수 있기에 명시적 형변환을 권장
4-2. 명시적 형변환
4-2-1. TO_NUMBER(문자열)
문자열을 숫자로 변환
ex ) TO_NUMBER('1234')
= 1234
ex ) TO_NUMBER('abc')
= Error 발생
4-2-2. TO_CHAR(숫자or날짜,[포맷])
숫자 또는 날짜를 포맷 형식의 문자열로 변환
ex ) TO_CHAR(1234)
= '1234'
ex ) TO_CHAR(SYSDATE, 'YYYYMMDD HH24MISS')
= 20240215 133131
4-2-3. TO_DATE(문자열, 포맷)
포맷형식의 문자열을 날짜형으로 변환
ex ) TO_DATE('20240215','YYYYMMDD')
= 2024-02-15
5. NULL 관련 함수
5-1. NVL(인수1,인수2)
인수1의 값이 NULL이 아닌 경우 인수1를 반환/ NULL인 경우 인수2를 반환
5-2. NULLIF(인수1,인수2)
인수1과 인수2가 같으면 NULL을 반환/ 같지않으면 인수1 반환
5-2. COALESCE(인수1,인수2,...)
NULL이 아닌 최초의 인수를 반환
6. CASE
함수보다는 구문에 가깝다
Oracle의 DECODE함수와 같은 기능을 한다
# example1
CASE WHEN SUBWAY_LINE='1' THEN 'BLUE'
WHEN SUBWAY_LINE='1' THEN 'BLUE'
WHEN SUBWAY_LINE='2' THEN 'GREEN'
WHEN SUBWAY_LINE='3' THEN 'BORANGE'
[ELSE 'GARY']
END
# example2
CASE SUBWAY_LINE
WHEN '1' THEN 'BLUE'
WHEN '2' THEN 'GREEN'
WHEN '3' THEN 'ORANGE'
END
# example3
DECODE (SUBWAY_LINE,'1','BLUE','2','GREEN','3','ORANGE','GRAY')
틀린점이 있으면 피드백 부탁드립니다.
'개발 > SQL&DB' 카테고리의 다른 글
[SQL/DB] SELECT Query 실행 순서 (2) | 2024.02.21 |
---|---|
[SQL/DB] 별칭(Alias)의 모든 것 (0) | 2024.02.20 |