개발/SQL&DB

[SQL/DB] SQL Function 정리

hitit1000 2024. 2. 15. 14:58

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