본문 바로가기
개발일지/SQL

SQL Scalar Functions

by 다니엘의 개발 이야기 2022. 7. 2.
320x100

Scalar Functions

 

==========================================

#1 기본요소로써, 단일 값을 반환 하는 함수들

 

UCASE 영문을 대문자로 변환하는 함수

 

select ucase(string)

 

예시로는

select ucase(menu), price FROM sandwich WHERE price > 15;

라고 했을때, price가 15초과 인것들을 조회할것이다.

라는 의미고, menu 컬럼에 들어있는 필드값들은 모두 대문자로 변환되어 반환된다.

 

==========================================

 

LCASE 영문을 소문자로 변환하는 함수

 

기본적으로 UCASE와 사용법이 같고, 결과만 다른거니깐 생략

 

==========================================

 

MID 문자열 부분을 반환하는 함수

 

select mid(string, start_position, length);

 

start_position - 문자열 반환 시작 위치 (시작을 0부터가 아니라 1부터 카운트한다)

length - 반환할 문자열 길이

 

select mid(‘this is mid test’, 6,5);

결과값 - is mi

 

==========================================

 

LENGTH 문자열의 길이를 반환하는 함수

 

select length(string)

 

==========================================

 

 

ROUND 지정한 자리에서 숫자를 반올림하는 함수(0이 소수점 첫째 자리)

 

select round(number, decimals_place);

 

number - 반올림할 대상

decimals_place - 반환할 소수점 자리 (option)

 

예시1

 

select round(315.625, 0);

결과값 316

 

select round(315.625, 1);

결과값 315.6

 

select round(315.625, 2);

결과값 315.63

 

select round(315.625, -1);

결과값 320

 

select round(315.625, -2);

결과값 300

 

중요 응용편

 

문제: 가격이 백원 단위에서 반올림 했을때 2000원 이상인 경우 천원단위에 콤마를 넣어서 조회

 

# 가격의 소숫점 아랫것은 모두 반올림, 반버림해줄것이고, 결과값에 천단위 콤마를 찍어줄 것이다.

select format(가격, 0)

 

# oil_price로 부터 가져온 파일로

from oil_price

 

# 설정된 가격의 -3자리 즉, 100원자리를 반올림 혹은 반버림해서 없애주겠다. 즉, 1,000의 자리 이상으로 간다.

# 그리고 설정된 가격대로 했을때, 2000 이상의 결과만 반환해준다.

where round(가격, -3) >= 2000;

 

결과값

1,509

1,598

1,635

2,160

 

이처럼 설정 “조건”이 해당하면 값을 format에 맞추어 반환해준다.

그리고 설정 ‘조건’대로 값이 변하진 않는다.

 

가격비교를 round로 해준 이유는.

format으로 빼게되면, 숫자가 아닌 문자가 되는데

round는 숫자이기 때문이다.

 

==========================================

 

NOW 현재 날짜 및 시간, 분, 초를 반환하는 함수

 

select now()

 

==========================================

 

FORMAT 숫자를 천단위 콤마가 있는 형식으로 반환하는 함수 + round 기능

 

# 소수점 뒷자리의 것들은 모두 반올림 혹은 반 버림 시키겠다.)

select format(12250.641, 0)

 

결과값 12,250

 

# 중요

문제: 가격이 백원 단위에서 반올림 했을때 2000원 이상인 경우 천원단위에 콤마를 넣어서 조회

 

# 가격의 소숫점 아랫것은 모두 반올림, 반버림해줄것이고, 결과값에 천단위 콤마를 찍어줄 것이다.

select format(가격, 0)

 

# oil_price로 부터 가져온 파일로

from oil_price

 

# 설정된 가격의 -3자리 즉, 100원자리를 반올림 혹은 반버림해서 없애주겠다. 즉, 1,000의 자리 이상으로 간다.

# 그리고 설정된 가격대로 했을때, 2000 이상의 결과만 반환해준다.

where round(가격, -3) >= 2000;

 

결과값

1,509

1,598

1,635

2,160

 

이처럼 설정 “조건”이 해당하면 값을 format에 맞추어 반환해준다.

그리고 설정 ‘조건’대로 값이 변하진 않는다.

 

가격비교를 round로 해준 이유는.

format으로 빼게되면, 숫자가 아닌 문자가 되는데

round는 숫자이기 때문이다.

 

==========================================

300x250