- Scalar Functions
- 입력값을 기준으로 단일 값을 반환하는 함수
- Function | Description
: UCASE = 영문을 대문자로 변환하는 함수
: LCASE = 영문을 소문자로 변환하는 함수
: MID = 문자열 부분을 반환하는 함수
: LENGTH = 문자열의 길이를 반환하는 함수
: ROUND = 지정한 자리에서 숫자를 반올림하는 함수
: NOW = 현재 날짜 및 시간을 반환하는 함수
: FORMAT = 숫자를 천단위 콤마가 있는 형식으로 반환하는 함수
- UCASE
- 영문을 대문자로 변환하는 함수
SELECT UCASE(string);
- 예) 다음 문장을 모두 대문자로 조회
SELECT UCASE ('This is ucase test')
- 예) $15가 넘는 메뉴를 대문자로 조회
SELECT UCASE(menu) FROM sandwith WHERE price > 15 ;
- LCASE
- 영문을 소문자로 변환하는 함수
SELECT LCASE(string);
- 예)
SELECT LCASE('This is lcase test')
- 예) $5가 안 되는 메뉴를 소문자로 조회
SELECT LCASE(menu) FROM sandwich WHERE price < 5;
- MID
-문자열 부분을 반환하는 함수
SELECT MID(string, start_position, length);
strint = 원본문자열
start = 문자열 반환 시작 위치(첫 글자는 1, 마지막 글자는 -1)
length = 반환할 문자열 길이
- 예) 1번 위치에서 4글자를 조회
SELECT MID('This is mid test', 1, 4);
= This
- 예) 6번 위치에서 5글자를 조회
SELECT MID('This is mid test', 6, 5);
= is mi
- 예) -4번 위치에서 4글자를 조회
SELECT MID('This is mid test', -4, 4);
= test
- 예) -8번 위치에서 3글자를 조회
SELECT MID('This is mid test', -8, 3);
= mid
- 예) 11위 카페이름 중 두번째 단어만 조회, -6번 위치에서 4글자를 조회
SELECT MID(cafe, -6, 4) FROM sandwich WHERE ranking = 11;
= cafe
- LENGTH
- 문자열의 길이를 반환하는 함수
SELECT LENGTH(string)
- 예)
SELECT LENGTH ('This is len test')
= 16
- 예) 문자 없는 경우, 길이도 0
SELECT LENGTH ('');
= 0
- 예) 공백의 경우도 문자이므로 길이 1
SELECT LENGTH (' ');
= 1
- 예) NULL의 경우는 길이가 없으므로 NULL
SELECT LENGTH (NULL);
= NULL
- 예) sandwich 테이블에서 top 3의 주소 길이 검색
SELECT LENGTH (address), address FROM sandwich WHERE ranking <= 3;
- ROUND
- 지정한 자리에서 숫자를 반올림하는 함수
SELECT ROUND(number, decimals_place);
- number: 반올림할 대상
- decimals: 반올림할 소수점 위치(option)
- 예) 반올림할 위치를 지정하지 않을 경우, 소수점 자리(0)에서 반올림
SELECT ROUND(315.625);
= 316
- 예) 소수점 첫번째 위치는 0
SELECT ROUND(315.625, 0);
= 316
- 예) 소수점 두번째 위치는 1
SELECT ROUND(315.625, 1);
= 315.6
- 예) 소수점 세번째 위치는 2
SELECT ROUND(315.625, 2);
= 315.63
- 예) 일단위 위치는 -1(정수에서 반올림)
SELECT ROUND(315.625, -1);
= 320
- 예) 십단위 위치는 -2(정수에서 반올림)
SELECT ROUND(315.625, -2);
= 300
- 예) sandwich 테이블에서 소수점 자리는 반올림해서 1달러 단위만 표시(최하위 3개만 표시)
SELECT ranking, price, ROUND(price) FROM sandwich ORDER BY ranking DESC LIMIT 3
- NOW
- 현재 날짜 및 시간을 반환하는 함수
SELECT NOW();
- 숫자를 천단위 콤마가 있는 형식으로 반환하는 함수(=STRING 형식)
SELECT FORMAT(number, decimal_place);
- number: 포맷을 적용할 문자 혹은 숫자
- decimals: 표시할 소수점 위치
- 예) 소수점을 표시하지 않을 경우 0
SELECT FORMAT(12345.6789, 0);
= 12,346 = 소수점 다 지움.
- 예) 소수점 두자리까지 표시할 경우 2
SELECT FORMAT(12345.6789, 2);
= 12,345.68
- 예) 소수점 열자리까지 표시할 경우 10
SELECT FORMAT(12345.6789, 10);
= 12,345.6789000000
- 예) oil_price 테이블에서 가격이 백원단위에서 반올림 했을 때 2000원 이상인 경우 천원단위에 콤마를 넣어서 조회
SELECT FORMAT(가격, 0) FROM oil_price WHERE ROUND(가격, -3) >= 2000;
- 문제
-
sandwich 테이블에서 가게이름은 대문자, 메뉴이름은 소문자로 조회
= select ucase(cafe), lcase(menu) from sandwich;
-
sandwich 테이블에서 10위 메뉴의 마지막 단어 조회
= select ranking, cafe, mid(menu, -3, 3) from sandwich where ranking = 10;
-
sandwich 테이블에서 메뉴이름의 평균길이를 조회
= select avg(length(menu)) from sandwich limit 3;
= select sum(length(menu)) from sandwich limit 3;
-
oil_price 테이블에서 가격을 십원단위에서 반올림해서 조회
= select 가격, round(가격, -2) from oil_price;
-
oil_price 테이블에서 가격을 십원단위에서 반올림했을 때 2000원 이상인 경우는 천원 단위에서 반올림해서 조회
= select format(가격, 0), 가격
from oil_price
where round(가격, -2) >= 2000;