BLOG ARTICLE 함수 | 1 ARTICLE FOUND

  1. 2011.07.22 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(날짜,'형식') : 날짜를 형식에 맞게 출력
DATE타입 구분기호 설명 구분기호 설명
년도 %Y 4자리 연도 %y 2자리 년도
%M
%b
긴 월 이름 (January, ...)
짧은 월 이름(Jan, ...)
%m
%c
숫자의 월 (01...12)
숫자의 월 (1...12)
요일 %W 긴 요일 이름 (Sunday, ...) %a 짧은 요일 이름 (Sun, ...)
%D
%w
월 내에서 서수 형식의 일(1th, ...)
숫자의 요일 (0=Sunday, ...)
%d
%e
%j
월 내의 일자 (01...31)
월 내의 일자 (1...31)
일년 중의 날수 (001...366)
%l
%h
%I
12시간제의 시 (1...12)
12시간제의 시 (01...12)
12시간제의 시 (01...12)
%k
%H
12시간제의 시 (0...23)
12시간제의 시 (00...23)
%i 숫자의 분 (00...59)
%S 숫자의 초 (00...59) %s 숫자의 초 (00...59)
시간 %r 12시간제의 시간 (hh:mm:ss AM 또는 PM) %T 24시간제의 시간 (hh:mm:ss)
%U 일요일을 기준으로 한 주 (0...52) %u 월요일을 기준으로 한 주 (0...52)
기타 %% 문자 '%' %p AM 또는 PM

   ☞ 예)
   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 이나 음수값은 해당이 안됨
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST