[mysql] MySQL 함수
로빈아빠
본문
숫자 관련 함수
▶ ABS(숫자) : 절대값 출력. select abs(123); ▶ CEILING(숫자) : 값보다 큰 정수 중 가장 작은 수. --양수일 경우는 소숫점 자리에서 무조건 반올림(4.0과 같은 소숫점 자리 0 값은 제외) --음수일 경우는 소숫점 자리를 무조건 버림 select ceiling(4.0); select ceiling(4.1); select ceiling(4.9); ▶ FLOOR(숫자) : 값보다 작은 정수 중 가장 큰 수[실수를 무조건 버림(음수일 경우는 제외)]. --음수일 경우는 [.0/.00/.000/...] 을 제외하고 무조건 소숫점을 버리고 반내림(?) select floor(4.0); select floor(4.1); select floor(4.9); select floor(-4.6789); ▶ ROUND(숫자,자릿수) : 숫자를 소수점 이하 자릿수에서 반올림.(자릿수는 양수,0,음수를 갖을 수 있다.) --자릿수를 생략하면 소숫점이 5 이상일 때 반올림/자릿수를 지정하면 지정한 자리수에서 반올림 select round(4.5); select round(4.55); select round(-4.5); select round(4.556); select round(4.556,0); select round(4.556,1); select round(4.556,2); select round(45.556,-1); select round(455.556,-2); ▶ TRUNCATE(숫자,자릿수) : 숫자를 소수점 이하 자릿수에서 버림. ==>만일 자릿수를 소숫점 이전으로 정하면 소숫점이하는 버리고 나머지 값은 0 값으로 처리 / 예) truncate(9999,-3) --> 9000 ==>또는 자릿수를 소숫점이하로 정하며, 해당숫자가 자릿수보다 소숫점이 모자랄경우 0 값으로 대치 / 예) truncate(999,3) --> 999.000 --반드시 자릿수를 명시해주어야 한다 --음수일 경우는 해당자릿수에서 소숫점을 버리면서 무조건 반올림 ==>(자릿수 숫자에서 이후 숫자가 0 일 경우는 제외 / 예)-4.0,0/-400,-2/-4.1230,4) ==>음수 역시 자릿수를 소숫점이하로 정하며, 해당숫자가 자릿수보다 소숫점이 모자랄경우 0 값으로 대치 ==>또한 자릿수를 소숫점 이전으로 정하면 소숫점이하는 버리고 나머지 값은 역시 0 값으로 처리 ▶ POW(X,Y) 또는 POWER(X,Y) : X의 Y승 --소숫점이 있는 경우도 실행, 단 음수는 양수로 승처리 select pow(-2.5,2); select pow(1.5,2); ▶ MOD (분자, 분모) : 분자를 분모로 나눈 나머지를 구한다.(연산자 %와 같음) select mod(12,5); ==> 2 select 12%5; ==> 2 ▶ GREATEST(숫자1,숫자2,숫자3...) : 주어진 수 중 제일 큰 수 리턴. select greatest(100,101,90); ▶ LEAST(숫자1,숫자2,숫자3...) : 주어진 수 중 제일 작은 수 리턴. select least(100,101,90); ▶ INTERVAL(a,b,c,d.....) : a(숫자)의 위치 반환 --두 번째 이후는 오름차순 정렬이 되어야 함 예) INTERVAL(5,2,4,6,8) ==> 2 5는 4와 6사이에 존재, 4~6사이의 위치가 앞에서 2번째 select interval(4,1,2,3,5,6); |
문자 관련 함수
▶ ASCII(문자) : 문자의 아스키 코드값 리턴. SELECT ASCII('문자'); select ascii('A'); ▶ CONCAT('문자열1','문자열2','문자열3'...) : 문자열들을 이어준다. select concat('ASP,','PHP,','SQL',' WEB STUDY'); ▶ INSERT('문자열','시작위치','길이','새로운문자열') : 문자열의 시작위치부터 길이만큼 새로운 문자열로 대치 '시작위치' 와 '길이'는 문자열이 아니므로 작은따옴표로 굳이 묶어주지 않아도 된다. select insert('MySql web study','7','3','offline'); select insert('MySql web study',7,3,'offline'); ▶ REPLACE('문자열','기존문자열','바뀔문자열') : 문자열 중 기존문자열을 바뀔 문자열로 바꾼다. select replace('MySql web study','web','offline'); ▶ INSTR('문자열','찾는문자열') : 문자열 중 찾는 문자열의 위치값을 출력 --값이 존재하지 않으면 0값 리턴 select instr('MySql web study','s'); select instr('MySql web study','S'); ▶ LEFT('문자열',개수) : 문자열 중 왼쪽에서 개수만큼을 추출. select left('MySql web study',5); select left('MySql web study','5'); ▶ RIGHT('문자열',개수) : 문자열 중 오른쪽에서 개수만큼을 추출. select right('MySql web study',5); select right('MySql web study','5'); ▶ MID('문자열',시작위치,개수) : 문자열 중 시작위치부터 개수만큼 출력 select mid('MySql web study',7,3); select mid('MySql web study','7','3'); ▶ SUBSTRING('문자열',시작위치,개수) : 문자열 중 시작위치부터 개수만큼 출력 select substring('Mysql web study',11,5); select substring('Mysql web study','11','5'); ▶ LTRIM('문자열') : 문자열 중 왼쪽의 공백을 없앤다. select ltrim(' web study'); ▶ RTRIM('문자열') : 문자열 중 오른쪽의 공백을 없앤다. select rtrim('web study '); ▶ TRIM('문자열') : 양쪽 모두의 공백을 없앤다. select trim(' web study '); ▶ LCASE('문자열') 또는 LOWER('문자열') : 소문자로 바꾼다. select lcase('MYSQL'); select lower('MySQL'); ▶ UCASE('문자열') 또는 UPPER('문자열') : 대문자로 바꾼다. select ucase('mySql'); select upper('mysql'); ▶ REVERSE('문자열') : 문자열을 반대로 나열한다. 예) REVERSE('abcde') ==> edcba select reverse('lqSyM'); |
논리 관련 함수, 집계함수
--논리 관련 함수 ☞ IF(논리식,참일 때 값,거짓일 때 값) 논리식이 참이면 참일 때 값을 출력하고 논리식이 거짓이면 거짓일 때 출력한다. ☞ IFNULL(값1,값2) 값1이 NULL 이면 값2로 대치하고 그렇지 않으면 값1을 출력 --집계 함수 ☞ COUNT(필드명) NULL 값이 아닌 레코드 수를 구한다. ☞ SUM(필드명) 필드명의 합계를 구한다. ☞ AVG(필드명) 각각의 그룹 안에서 필드명의 평균값을 구한다. ☞ MAX(필드명) 최대값을 구한다. ☞ MIN(필드명) 최소값을 구한다. |
날짜 관련 함수
▶ NOW() 또는 SYSDATE() 또는 CURRENT_TIMESTAMP() 현재 날짜와 시간 출력 ※ 함수의 상황이 숫자인지 문자열인지에 따라 YYYYMMDDHHMMSS 또는 'YYYY-MM-DD HH:MM:SS' 형식으로 반환한다. 예) select now(); ==> '2001-05-07 09:10:10' select now() + 0; ==> 20010507091010 ▶ CURDATE() 또는 CURRENT_DATE() 현재 날짜 출력 ※ 함수의 상황이 숫자인지 문자열인지에 따라 YYYYMMDD 또는 'YYYY-MM-DD 형식으로 반환한다. 예) select curdate(); ==> '2001-05-07' select curdate() + 0; ==> 20010507 ▶ CURTIME() 또는 CURRENT_TIME() 현재 시간 출력 ※ 함수의 상황이 숫자인지 문자열인지에 따라 HHMMSS 또는 'HH:MM:SS' 형식으로 반환한다. 예) select curtime(); ==> '09:10:10' select curtime() + 0; ==> 091010 ▶ DATE_ADD(날짜,INTERVAL 기준값) 날짜에서 기준값 만큼 더한다. ※ 기준값 : YEAR, MONTH, DAY, HOUR, MINUTE, SECOND 예) select date_add(now(), interval 2 day); ==> 오늘보다 2일 후의 날짜와 시간 출력. select date_add(curdate(), interval 2 day); ==> 오늘보다 2일 후의 날짜 출력. ▶ DATE_SUB(날짜,INTERVAL 기준값) 날짜에서 기준값 만큼 뺸다. ※ 기준값 : YEAR, MONTH, DAY, HOUR, MINUTE, SECOND select date_sub(now(),interval 2 day); ==> 오늘보다 2일 전의 날짜와 시간 출력. select date_sub(curdate(), interval 2 day); ==> 오늘보다 2일 전의 날짜 출력. ▶ YEAR(날짜) : 날짜의 연도 출력. select year('20000101'); select year(20000101); select year('2000-01-01'); select year(now()); select year(curdate()); select year(date_add(now(),interval 2 year)); select year(date_sub(curdate(),interval 2 year)); ▶ MONTH(날짜) : 날짜의 월 출력. select month('20001231'); select month(20001231); select month('2000-12-31'); select month(now()); select month(curdate()); select month(date_add(now(),interval 2 month)); select month(date_sub(curdate(),interval 2 month)); ▶ MONTHNAME(날짜) : 날짜의 월을 영어로 출력. select monthname(20021221); select monthname('20000721'); select monthname('2000-08-10'); select monthname(now()); select monthname(curdate()); select monthname(date_add(now(),interval 17 month)); select monthname(date_sub(curdate(),interval 11 month)); ▶ DAYNAME(날짜) : 날짜의 요일일 영어로 출력. select dayname(20000121); select dayname('20010123'); select dayname('2001-06-22'); select dayname(now()); select dayname(curdate()); select dayname(date_add(now(),interval 21 day)); select dayname(date_sub(curdate(),interval 333 day)); ▶ DAYOFMONTH(날짜) : 날짜의 월별 일자 출력. select dayofmonth(20030112); select dayofmonth('20011231'); select dayofmonth('2001-12-23'); select dayofmonth(now()); select dayofmonth(curdate()); select dayofmonth(date_add(now(),interval 56 day)); select dayofmonth(date_sub(curdate(),interval 33 day)); ▶ DAYOFWEEK(날짜) : 날짜의 주별 일자 출력(월요일(0),화요일(1)...일요일(6)) select dayofweek(20011209); select dayofweek('20001212'); select dayofweek('2003-03-21'); select dayofweek(now()); select dayofweek(curdate()); select dayofweek(date_add(now(),interval 23 day)); select dayofweek(date_sub(curdate(),interval 31 day)); ▶ WEEKDAY(날짜) : 날짜의 주별 일자 출력(월요일(0),화요일(1)...일요일(6)) select weekday(20000101); select weekday('20030223'); select weekday('2002-10-26'); select weekday(now()); select weekday(curdate()); select weekday(date_add(now(),interval 23 day)); select weekday(date_sub(curdate(),interval 33 day)); ▶ DAYOFYEAR(날짜) : 일년을 기준으로 한 날짜까지의 날 수. select dayofyear(20020724); select dayofyear('20001231'); select dayofyear('2002-01-01'); select dayofyear(now()); select dayofyear(curdate()); select dayofyear(date_add(curdate(),interval 44 year)); select dayofyear(date_sub(now(),interval 25 month)); select dayofyear(date_add(now(),interval 55 day)); select dayofyear(date_sub(curdate(),interval 777 hour)); select dayofyear(date_add(now(),interval 999999 minute)); ▶ WEEK(날짜) : 일년 중 몇 번쨰 주. select week(now()); select week(date_sub(curdate(),interval 12 month)); ▶ FROM_DAYS(날 수) --00년 00월 00일부터 날 수 만큼 경과한 날의 날짜 출력. ※ 날 수는 366 이상을 입력 그 이하는 무조건 '0000-00-00' 으로 출력. --또한 9999-12-31 [from_days(3652424)] 까지의 날짜가 출력가능 하다고는 하나 정확히 말하면 0000-03-15 [from_days(3652499)] 까지의 날짜가 출력가능함. --따라서 날 수는 366 이상 3652424[3652499] 이하가 되어야 한다. select from_days(3652424); select from_days('3652499'); ▶ TO_DAYS(날짜) --00 년 00 월 00일 부터 날짜까지의 일자 수 출력. --from_days와 비교해 볼 때 정확한 날짜범위는 3652424 일 수 까지임을 알 수 있다. select to_days('99991231'); select to_days('0000-03-15'); 응용 예제1) 자신이 살아 온 날수 select to_days(now()) - to_days('본인생일자'); select to_days(now()) - to_days('1970-10-10'); 응용 예제2) 살아 온 날수를 이용하여 자신의 나이를 만으로 구하기 select (to_days(now())-to_days('1970-10-10'))/365; select floor((to_days(now())-to_days('19701010'))/365); ▶ DATE_FORMAT(날짜,'형식') : 날짜를 형식에 맞게 출력
☞ 예) select date_format(now(),'%Y:%M:%p'); ==> 2001:May:PM ▶ DATABASE() : 현재의 데이터베이스 이름을 출력한다. ▶ PASSWORD('문자열') : 문자열을 암호화한다. ▶ FORMAT(숫자,소수이하자리수) : 숫자를 #,###,###.## 형식으로 출력 --임의의 소수점자릿수를 생성한다./소숫점을 필요한 만큼 취한다. --소숫점을 만들어 같은 길이로 한다음 동일하게 프로그램에서 불러와서 소숫점을 버리고 필요한 곳에 출력하는 등에 응용할 수 있다. select format(123,5); select format(123.12345600123,9); select format(123.123,-3); ※ 소숫점이하자리수가 0 이나 음수값은 해당이 안됨 |
관련링크
댓글목록
등록된 댓글이 없습니다.