SQL - scalar Functions

Jungmin·2022년 11월 11일
1

SQL

목록 보기
15/17

⏹ Scalar Funtions

: 입력 값을 기준으로 단일 값을 반환하는 함수

FunctionDescription
UCASE영문을 대문자로 변환
LCASE영문을 소문자로 변환
MID문자열 부분을 반환
LENGTH문자열 길이를 반환
ROUND지정 자리에서 숫자를 반올림 (0: 소수점 첫째 자리)
NOW현재 날짜 및 시간 반환
FORMAT숫자를 천단위 ,가 있는 형식으로 반환

◼ UCASE

SELECT UCASE(string);
: 영문을 대문자로 변환

mysql> select UCASE('This Is ucase Test.');
+------------------------------+
| UCASE('This Is ucase Test.') |
+------------------------------+
| THIS IS UCASE TEST.          |
+------------------------------+
1 row in set (0.04 sec)
❔ $15가 넘는 메뉴를 대문자로 조회
mysql> select ucase(menu) from sandwich where price > 15;
+----------------------------------+
| ucase(menu)                      |
+----------------------------------+
| LOBSTER ROLL                     |
| GRILLED LAUGHING BIRD SHRIMP AND |
| SHAVED PRIME RIB                 |
+----------------------------------+
3 rows in set (0.04 sec)

◼ LCASE

SELECT LCASE(string);
: 영문을 소문자로 변환

mysql> select lcase('This Is LCASE Test.');
+------------------------------+
| lcase('This Is LCASE Test.') |
+------------------------------+
| this is lcase test.          |
+------------------------------+
❔ $5가 안되는 메뉴를 소문자로 조회
mysql> select lcase(menu) from sandwich where price < 5;
+--------------+
| lcase(menu)  |
+--------------+
| meatball sub |
+--------------+

◼ MID

SELECT MID(string, start_position, length);
:문자열 부분 반환

string :원본 문자열
start : 문자열 반환시작 위치 (첫글자 1, 마지막 -1)
length : 반환할 문자열 길이

❔ 6번 위치에서 5글자 조회 (공백도 포함)
mysql> select MID('This is mid test',6,5);
+-----------------------------+
| MID('This is mid test',6,5) |
+-----------------------------+
| is mi                       |
+-----------------------------+
1 row in set (0.05 sec)  
❔ -8번 위치(뒤에서 8번째)에서 3글자 조회
mysql> select mid('This is mid test', -8, 3);
+-------------------------------+
| mid('This is mid test', -8,3) |
+-------------------------------+
| mid                           |
+-------------------------------+
1 row in set (0.04 sec)
❔ 11위 카페이름 중 두번째 단어만 조회 (6번째 위치에서 4글자)
mysql> select MID(cafe, 6, 4) from sandwich where rand = 11;
+-----------------+
| MID(cafe, 6, 4) |
+-----------------+
| Cafe            |
+-----------------+
1 row in set (0.04 sec)

◼ LENGTH

SELECT LENGTH(string);
: 문자열 길이 반환

mysql> select length('This is len test');
+----------------------------+
| length('This is len test') |
+----------------------------+
|                         16 |
+----------------------------+
1 row in set (0.04 sec)
  • 문자가 없는 경우 ('') : 길이 0
  • 공백의 경우 (' ') : 길이 1
  • NULL의 경우 : NULL 리턴
❔ sandwich 테이블에서 Top3의 주소 길이 검색
mysql> select length(address), address from sandwich where rand <= 3; 
+-----------------+---------------------+
| length(address) | address             |
+-----------------+---------------------+
|              19 | 2109 W. Chicago Ave |
|              18 | 800 W. Randolph St  |
|              16 |  445 N. Clark St    |
+-----------------+---------------------+
3 rows in set (0.04 sec)

◼ ROUND

: 지정한 자리에서 반올림
SELECT ROUND(number, decimals_place);

  • number : 반올림 대상 / decimals :반올림할 소수점 위치 (option)
❔ 반올림 위치 지정하지 않는 경우, 소수점 0 자리에서 반올림
mysql> select round(315.625);
+----------------+
| round(315.625) |
+----------------+
|            316 |
+----------------+
1 row in set (0.04 sec)

# 동일 방식 (첫번째 소수점 : 0)
mysql> select round(315.625, 0);
+-------------------+
| round(315.625, 0) |
+-------------------+
|               316 |
+-------------------+
1 row in set (0.04 sec)
❔ 세번째 소수점 기준 반올림
mysql> select round(315.625, 2);
+-------------------+
| round(315.625, 2) |
+-------------------+
|            315.63 |
+-------------------+
1 row in set (0.04 sec)
💡 소수점 단위가 아닌 1단위 위치는 -1
mysql> select round(315.625, -1);
+--------------------+
| round(315.625, -1) |
+--------------------+
|                320 |
+--------------------+
1 row in set (0.04 sec)
💡 10단위 위치는 -2
mysql> select round(315.625, -2);
+--------------------+
| round(315.625, -2) |
+--------------------+
|                300 |
+--------------------+
1 row in set (0.04 sec)

◼ NOW

: 현재 및 시간을 반환
SELECT NOW();

mysql> SELECT NOW();
+---------------------+
| NOW()               |
+---------------------+
| 2022-11-11 07:56:01 |
+---------------------+
1 row in set (0.04 sec)

◼ FORMAT

: 숫자를 천단위 콤마가 있는 형식으로 반환 --> round와 비슷
SELECT FORMAT(number, decimal_place);

  • number : 포맷 적용 문자 혹은 숫자 / decimals : 표시할 소수점 위치
소수점 표시하지 않을 경우 0
mysql> select format(12345.6789, 0);
+-----------------------+
| format(12345.6789, 0) |
+-----------------------+
| 12,346                |
+-----------------------+
1 row in set (0.04 sec)
❔ 소수점 두자리 까지 표시할 경우
mysql> select format (12345.6789, 2);
+------------------------+
| format (12345.6789, 2) |
+------------------------+
| 12,345.68              |
+------------------------+
1 row in set (0.04 sec)
profile
데이터분석 스터디노트🧐✍️

0개의 댓글