DBMS (MySQL)

[DBMS] 함수(제어흐름, 문자열, 수학, 날짜 및 시간, 시스템 정보)

(งᐛ)ว 2023. 7. 25. 22:19
728x90

[제어흐름 함수]

프로그램의 흐름을 제어한다.

 

if 함수 : 수식의 진리값에 따른 값 반환

 select 컬럼, if(조건, '참일때반환값', '거짓일때반환값') from 테이블;

select bookno, if(bookno>=3,'A','B') as if_result from book;

select bookno, if(bookno=2,'2','else') as if_result from book;

 

**해당 데이터베이스가 존재하면 삭제한다

drop database if exists sample_DB; 


case 함수 : 다중조건을 이용하는 함수 

select 컬럼

case

when (조건1) then 조건1참일때반환값

when (조건2) then 조건2참일때반환값

...

end

as

from 테이블;

 

select title, author,

case

when(title='E') then 'true'

when(author='EE'then 'true'

else 'false'

end

as case_result

from book;


nullif 함수 : 두 값을 비교하여 같으면 null, 다르면 첫번째 값 반환 *잘사용안함

select nullif(값1, 값2);

select nullif(21);  => 2반환

select nullif(11);  => null반환

 

ifnull 함수 : 수식1이 null이면 수식2를 반환하고 그렇지 않으면 수식1 반환

select 컬럼, ifnull(컬럼, 'null일때대체값') from 테이블;

select state, ifnull(state, "No Data") as null_check from customers limit 5;



[문자열 함수]

문자열을 조작하는 함수 

 

concat 함수 : 문자열을 이을 때 사용 

select concat('문자열1','문자열2', ...);

select concat('A','B','C');

select concat('2023','07','24') as concat_rs;

select concat('My','SQL');

 

concat_ws 함수 : 구분자와 함께 문자열을 이을 때 사용

select concat_ws('구분자','문자열1','문자열2', ...);

select concat_ws('/','2023','07','24'as concat_ws_rs;

select concat_ws('-','010','1111','1111');

select concat_ws('-',year(now()),month(now()),dayofmonth(now()));

 

format 함수 : 숫자를 소수점 아래 자릿수까지 표현 

select format(실수,소수점자릿수);

select format(1234.5678,2);   

->1234.57

 

insert 함수 : 기존 문자열의 특정 위치부터 대체할 문자열 입력

select insert('기존문자열', 대체문자열시작위치, 대체문자열길이(개수), '대체할문자열'); 

select insert('ABCDE',3,3,'@@@');   **3번째부터 3자리대체

->AB@@@

select insert('010-1234-1234',10,4,'####');   **10번째부터 4자리대체 

->010-1234-####

 

left, right 함수 : 해당방향부터 길이만큼 반환

select left('문자열','반환할갯수');

select left('ABCDE',3);   **왼쪽부터 3개

->ABC

select right('ABCDE',3);   **오른쪽부터 3개 

->CDE

 

trim 함수 : 문자열 양쪽 공백 제거

select trim('     문자열     ');

select trim('     ABC     ');

->ABC

 

replace 함수 : 기존문자열에서 특정문자열 변경

select replace('기존문자열','바꿀문자열''바뀔문자열');

select replace('It is apple','apple','banana');

->It is banana

select replace('I like JAVA','JAVA','MySQL');

->I like MySQL

 

space 함수 : 숫자크기만큼 공백생성

space(숫자)

select concat('ab',space(5),'cd');

->ab     cd

select concat('I',space(1),'Love',space(1),'MySQL');

->I Love MySQL

 

substring 함수 : 문자열의 특정위치부터 주어진 길이의 문자열만 반환 

substring('기존문자열',위치,길이);

select substring('abcdef',3,2);

->cd

select substring('I Love MySQL',8,5);

->MySQL

 

substring_index 함수 : 구분자를 기준으로 특정 횟수만큼 구분자가 나오면 그 뒤의 것은 버림

substring_index('기존문자열','구분자',구분자위치);

select substring_index('www.naver.com','.',2);

->www.naver

select substring_index('www.naver.com','.',-2);

->naver.com

select substring_index('2023/07/24','/',2);

->2023/07

select substring_index('root@localhost','@',1);

->root

select substring_index(user(),'@',1);

->root


[수학 함수]

 

abs 함수 : 절댓값 반환

select abs(-50);

->50

 

round 함수 : 소수의 반올림값 반환 (소수점 제거)

select round(3.14);

->3

 

sqrt 함수 : 제곱근 반환

select sqrt(16);

->4

 

**rand+floor 함수 : 1부터 특정 숫자까지 무작위 반환 

floor(1+(rand()*최대값));

select floor(1+(rand()*10))as rs;


[날짜 및 시간 함수]

 

curdate 함수 : 현재 날짜반환

select curdate();

curtime 함수 : 현재 시간반환

select curdate();

 

now, sysdate 함수 : 현재 날짜+시간 반환

select now();

select sysdate(); *좀 더 자주사용

 

datediff, timediff 함수 : 두번째 값에서 첫번째 값까지 얼마나(일자 또는 시간) 남았는지 반환 

select datediff('2023-08-01',curdate());

select timediff('24:00:00',curtime());


[시스템 정보 함수]

 

database, schema 함수 : 현재 사용중인 데이터베이스 이름 반환

select database();
select schema();

 

found_row 함수 : 마지막으로 실행한 select문 조회데이터 수 반환
select found_rows();
row_count 함수 : 마지막으로 실행한 insert, delete, update 구문 데이터 개수 반환 / 나머지 구문은 0,-1 반환
select row_count();

 

sleep함수 : 몇초간 쿼리 실행 정지
select sleep(5);

 

 

 

728x90