Developer

SQL | MySQL 주요 함수들

페이지 정보

작성일2016-10-10 17:50 조회3,394회

본문

목차

  1. 연산자
  2. 비교 연산자
  3. 조건문
  4. 날짜와 시간 관련 함수
  5. 문자열 관련 함수
  6. 기타 함수들

1. 연산자


연산자의 경우 일반적으로 사용하는 연산자들을 사용합니다.
"+" , "-" , "*" , "/" 등 입니다. 그럼 각각의 수행 결과를 확인 하겠습니다.
mysql> select 1+4*4;
-+-------+-
 | 1+4*4 |
-+-------+-
 |    17 |
-+-------+-
1 row in set (0.0 sec)
mysql> _
위에서 "( )" 사용없이 연산을 했기 때문에 우선 순위가 위인 연산자부터 연산이 이루어 졌습니다.
만약, (1+4)*4로 했다면 결과는 20이 될 것입니다.
mysql> select 4/(4-2);
-+---------+-
 | 4/(4-2) |
-+---------+-
 |    2.00 |
-+---------+-
1 row in set (0.0 sec)
mysql> _
위와 다르게 (4-2) 가 (4-4)일 경우 "null" 을 출력합니다.

2. 비교 연산자


비교 연산자는 결과가 참(1) 과 거짓(0)으로 결과를 출력합니다.
그리고 비교 연산자의 경우 몇 가지 규칙이 있습니다.
  • ~ 인수가 모두 문자열이면 문자열로 비교됩니다.
  • ~ 인수가 모두 정수면 정수로 비교됩니다.
  • ~ 인수가 모두 "null" 이면 연산의 결과도 "null"이 됩니다.
  • ~ 한쪽의 인수가 "timestamp" 이면 나머지도 같이 변환되어 비교됩니다.
  • ~ 한쪽의 인수가 "datetime" 이면 나머지도 같이 변환되어 비교됩니다.
  • ~ 나머지의 경우는 부동소수점 실수로 비교됩니다.
기호로는
  • "=" - 같다
  • "!= ,<>" - 같지 않다
  • "<=" - 작거나 같다
  • "<" - 작다.
  • ">=" - 크거나 같다
  • ">" - 크다
  • "<=>" - 둘 중 한쪽이 "null" 일 경우 0을 출력

인자 between (최소값) and (최대값) - 인자가 최소값과 최대값 사이에 존재 하면 "1"을 그렇지 않을 경우 "0"을 출력합니다.
인자 in (값, 값, …) - 인자가 ( ) 안에 존재하면 "1"을 그렇지 않으면 "0"을 출력합니다.
mysql> select "joyho" != "joyho.net";
-+------------------------+-
 | "joyho" != "joyho.net" |
-+------------------------+-
 |                      1 |
-+------------------------+-
1 row in set (0.0 sec)
mysql> _
비교 연산자 !=

mysql> select 4.6 >= 5.4;
-+------------+-
 | 4.6 >= 5.4 |
-+------------+-
 |          0 |
-+------------+-
1 row in set (0.0 sec)
mysql> _
비교 연산자 >=
위 결과가 거짓 이므로 "0"을 출력 합니다.

mysql> select 4 between 3 and 7;
-+-------------------+-
 | 4 between 3 and 7 |
-+-------------------+-
 |                 1 |
-+-------------------+-
1 row in set (0.0 sec)
mysql> _
비교 연산자 between
결과는 참이므로 "1"을 리턴합니다.
mysql> select 'joyho' in ('joyho.net',4,'test',"joyho");
-+-------------------------------------------+-
 | 'joyho' in ('joyho.net',4,'test',"joyho") |
-+-------------------------------------------+-
 |                                         1 |
-+-------------------------------------------+-
1 row in set (0.0 sec)
mysql> _
비교 연산자 in
"jun" 항목 안에 없기 때문에 거짓이므로 "0"을 리턴합니다.

3. 조건문


IF(expr, expr1, expr2)

- expr이 참이면 expr1을, 거짓이면 expr2의 값을 반환 합니다.
mysql> select IF(1>2, 1, 2);
-+---------------+-
 | IF(1>2, 1, 2) |
-+---------------+-
 |             2 |
-+---------------+-
1 row in set (0.0 sec)
mysql> _
IF

CASE(조건 또는 값) WHEN 값1 THEN 표시값 ELSE 표시값 END

mysql> select case('1') when '1' then 'a' when '2' then 'b' else 'c' end;
-+------------------------------------------------------------+-
 | case('1') when '1' then 'a' when '2' then 'b' else 'c' end |
-+------------------------------------------------------------+-
 | a                                                          |
-+------------------------------------------------------------+-
1 row in set (0.0 sec)
mysql> _
CASE

IFNULL(expr1, expr2)

- IF문과 거의 동일합니다. expr1값이 NULL이 아니면 expr1의 값을, NULL 이면 exp2의 값을 반환 합니다.
mysql> select IFNULL(1, 2);
-+--------------+-
 | IFNULL(1, 2) |
-+--------------+-
 |            1 |
-+--------------+-
1 row in set (0.0 sec)
mysql> _
IFNULL 예 1

mysql> select IFNULL(NULL, 2);
-+-----------------+-
 | IFNULL(NULL, 2) |
-+-----------------+-
 |               2 |
-+-----------------+-
1 row in set (0.0 sec)
mysql> _
IFNULL 예 2

NULLIF(expr1, expr2)

- expr1 과 expr2 이 같거나 참이면 NULL(또는 1)를 반환하고, 아니면 expr1 를 반환합니다.
mysql> select NULLIF(1, 1);
-+--------------+-
 | NULLIF(1, 1) |
-+--------------+-
 |       (NULL) |
-+--------------+-
1 row in set (0.0 sec)
mysql> _
NULLIF 예 1

mysql> select IFNULL(2, 3);
-+--------------+-
 | IFNULL(2, 3) |
-+--------------+-
 |            2 |
-+--------------+-
1 row in set (0.0 sec)
mysql> _
NULLIF 예 2

4. 날짜와 시간 관련 함수


날짜와 시간 관련 함수는 여러모로 사용하는 곳이 많은 부분입니다.
대부분의 표현에서 날짜와 시간은 꼭 들어가기 때문에 이 부분을 먼저 다루도록 하겠습니다.

MONTHNAME("날짜")

- 해당하는 날짜의 월을 영어로 리턴합니다.
mysql> select monthname("2016-10-10");
-+-------------------------+-
 | monthname("2016-10-10") |
-+-------------------------+-
 | October                 |
-+-------------------------+-
1 row in set (0.0 sec)
mysql> _
MONTHNAME

QUARTER("날짜")

- 해당하는 날짜의 분기를 리턴해 줍니다.
mysql> select quarter("2016-10-10");
-+-----------------------+-
 | quarter("2016-10-10") |
-+-----------------------+-
 |                     4 |
-+-----------------------+-
1 row in set (0.0 sec)
mysql> _
QUARTER

YEAR("날짜")

- 해당 날짜의 년도를 리턴해 줍니다.
mysql> select year("2016-10-10");
-+--------------------+-
 | year("2016-10-10") |
-+--------------------+-
 |               2016 |
-+--------------------+-
1 row in set (0.0 sec)
mysql> _
YEAR

HOUR("시간")

- 해당하는 시간을 리턴합니다.
mysql> select hour("06:10:30");
-+------------------+-
 | hour("06:10:30") |
-+------------------+-
 |                6 |
-+------------------+-
1 row in set (0.0 sec)
mysql> _
HOUR

MINUTE("시간")

- 해당 시간의 분을 리턴합니다.
mysql> select minute("06:10:30");
-+--------------------+-
 | minute("06:10:30") |
-+--------------------+-
 |                 10 |
-+--------------------+-
1 row in set (0.0 sec)
mysql> _
MINUTE

SECOND("시간")

- 해당 시간의 초를 리턴합니다.
mysql> select second("06:10:30");
-+--------------------+-
 | second("06:10:30") |
-+--------------------+-
 |                 30 |
-+--------------------+-
1 row in set (0.0 sec)
mysql> _
SECOND

PERIOD_ADD(날짜, N)

- 해당하는 날짜에의 개월에 "N"개월을 더 합니다.
(날짜는 YYMM, YYYYMM형식으로 주어지면 YYYYMM 형식으로 리턴합니다.)
mysql> select period_add("201610",4);
-+------------------------+-
 | period_add("201610",4) |
-+------------------------+-
 |                 201702 |
-+------------------------+-
1 row in set (0.0 sec)
mysql> _
PERIOD_ADD

CURDATE( )

- 오늘 날짜를 YYYY-MM-DD 또는 YYYYMMDD 형식으로 리턴해 줍니다.
함수가 문자열 또는 숫자로 사용됨에 따라 리턴 값은 달라 집니다.
mysql> select curdate();
-+- ----------+-
 | curdate()  |
-+------------+-
 | 2016-10-10 |
-+------------+-
1 row in set (0.0 sec)
mysql> _
CURDATE 예 1
mysql> select curdate()+1;
-+-------------+-
 | curdate()+1 |
-+-------------+-
 |    20161011 |
-+-------------+-
1 row in set (0.0 sec)
mysql> _
CURDATE 예 2

CURTIME( )

- 현재 시간을 HH:MM:SS 또는 HHMMSS 형식으로 리턴해 줍니다.
이 함수 역시 함수가 문자열 또는 숫자로 사용됨에 따라 리턴 값이 달라 집니다.
mysql> select curtime();
-+-----------+-
 | curtime() |
-+-----------+-
 | 18:37:49  |
-+-----------+-
1 row in set (0.0 sec)
mysql> _
CURTIME 예 1
mysql> select curtime()+1;
-+---------------+-
 | curtime()+1   |
-+---------------+-
 | 183749.000000 |
-+---------------+-
1 row in set (0.0 sec)
mysql> _
CURTIME 예 2

NOW( )

- 현재의 날짜와 시간을 리턴합니다.
mysql> select now();
-+---------------------+-
 | now()               |
-+---------------------+-
 | 2016-10-10 18:39:25 |
-+---------------------+-
1 row in set (0.0 sec)
mysql> _
NOW 예 1
mysql> select now()+1;
-+-----------------------+-
 | now()+1               |
-+-----------------------+-
 | 20161010183926.000000 |
-+-----------------------+-
1 row in set (0.0 sec)
mysql> _
NOW 예 2

UNIX_TIMESTAMP( )

- 유닉스 타임스탬프를 리턴합니다.
날짜 인자가 있을 경우 해당 날짜의 유닉스 타임스탬프를 리턴하고, 인자가 없을 경우 현재의 유닉스 타임스탬프를 리턴합니다.(초 단위로 나타냅니다.)
mysql> select unix_timestamp();
-+------------------+-
 | unix_timestamp() |
-+------------------+-
 |       1476092419 |
-+------------------+-
1 row in set (0.0 sec)
mysql> _
UNIX_TIMESTAMP 예 1
mysql> select unix_timestamp("2016-10-10 06:10:30");
-+---------------------------------------+-
 | unix_timestamp("2016-10-10 06:10:30") |
-+---------------------------------------+-
 |                            1476047430 |
-+---------------------------------------+-
1 row in set (0.0 sec)
mysql> _
UNIX_TIMESTAMP 예 2

FROM_UNIXTIME (유닉스 타임스탬프)

- 유닉스 타임스탬프 날짜에서 일반 형식의 날짜와 시간으로 리턴합니다.
이 함수를 이용해서 원하는 데이터 형태로도 출력이 가능합니다.
(DATE_FORMAT( ) 함수는 날짜와 시간을 여러 가지 형태로 표현 가능하게 합니다. 다음 함수를 참고 하세요.)
mysql> select from_unixtime(1476047430);
-+---------------------------+-
 | from_unixtime(1476047430) |
-+---------------------------+-
 | 2016-10-10 06:10:30       |
-+---------------------------+-
1 row in set (0.0 sec)
mysql> _
FROM_UNIXTIME 예 1
mysql> select from_unixtime(1476047430)+1;
-+-----------------------------+-
 | from_unixtime(1476047430)+1 |
-+-----------------------------+-
 |       20161010061031.000000 |
-+-----------------------------+-
1 row in set (0.0 sec)
mysql> _
FROM_UNIXTIME 예 2
mysql> select from_unixtime(1476047430,"%y-%m-%d");
-+--------------------------------------+-
 | from_unixtime(1476047430,"%y-%m-%d") |
-+--------------------------------------+-
 | 16-10-10                             |
-+--------------------------------------+-
1 row in set (0.0 sec)
mysql> _
FROM_UNIXTIME 예 3

DATE_FORMAT(날짜, 형태)

- 형태의 종류에 맞게 여러 가지 양식으로 날짜와 시간을 리턴해 줍니다.
특히 이 함수는 자주 사용 되므로 관심있게 보기 바랍니다.

형태의 종류는….
  • %M - 월 이름을 영어로 리턴합니다.(January)
  • %D - 접미사를 사용해 영어로 일을 리턴합니다.(1st , 2nd ..)
  • %W - 요일을 영어로 리턴합니다. (Monday)
  • %y - 2자리 연도를 리턴합니다.
  • %m - 월을 숫자로 리턴합니다.(01 , 02 , 03)
  • %d - 일을 숫자로 리턴합니다. (00 , 01 ,02 )
  • %a - 요일을 짧은 영어로 리턴합니다. (Mon)
  • %e - 일을 숫자로 리턴합니다.(0 , 1 , 2)
  • %c - 월을 숫자로 리턴합니다. (1 , 2 , 3)
  • %j - 한해의 몇 번째 요일인지 리턴합니다. (001 ~ 366)
  • %b - 월을 짧은 영어로 리턴합니다. (Jan)
  • %H - 24시간 형식의 시간을 리턴합니다. (00 ~ 23 )
  • %h - 12시간 형식의 시간을 리턴합니다. (01 ~ 12)
  • %k - 24시간 형식의 시간을 리턴합니다. (1 ~ 23)
  • %l - 시간을 리턴합니다. (1 ~ 12)
  • %i - 분을 리턴합니다. (00 ~ 59)
  • %T - 시분초의 24시간 형식을 리턴합니다. (hh:mm:ss)
  • %r - 시분초의 12시간 형식을 리턴합니다. (hh:mm:ss)
  • %s - 초를 리턴합니다. (00 ~ 59)
  • %p - AM , PM을 리턴합니다.
  • %w - 일주일 중 몇 번째 요일인지 리턴합니다.(0 - 일요일)
  • %U - 한해 중 몇 번째 주인지 리턴합니다.(일요일이 시작)
  • %u - 한해 중 몇 번째 주인지 리턴합니다.(월요일이 시작)
그럼 여러 가지 형태의 데이터 출력을 보겠습니다.
mysql> select date_format("2016-10-10 06:10:30","%W-%M-%d");
-+-----------------------------------------------+-
 | date_format("2016-10-10 06:10:30","%W-%M-%d") |
-+-----------------------------------------------+-
 | Monday-October-10                             |
-+-----------------------------------------------+-
1 row in set (0.0 sec)
mysql> _
DATE_FORMAT 예 1
mysql> select date_format("2016-10-10 06:10:30","%y-%m-%d %W %M-%d");
-+--------------------------------------------------------+-
 | date_format("2016-10-10 06:10:30","%y-%m-%d %W %M-%d") |
-+--------------------------------------------------------+-
 | 16-10-10 Monday October-10                             |
-+--------------------------------------------------------+-
1 row in set (0.0 sec)
mysql> _
DATE_FORMAT 예 2

TO_DAYS(날짜)

- 해당 날짜를 "0000" 부터 일수로 리턴해 줍니다.
mysql> select to_days("161010");
-+--------------------+-
 | to_days("000404") |
-+-------------------+-
 |            736612 |
-+-------------------+-
1 row in set (0.0 sec)
mysql> _
TO_DAYS 예 1
mysql> select to_days("16-10-10");
-+---------------------+-
 | to_days("16-10-10") |
-+---------------------+-
 |              736612 |
-+---------------------+-
1 row in set (0.0 sec)
mysql> _
TO_DAYS 예 2

FROM_DAYS(일수)

- 해당 일수로부터 날짜를 리턴해 줍니다.
mysql> select from_days("736612");
-+---------------------+-
 | from_days("736612") |
-+---------------------+-
 | 2016-10-10          |
-+---------------------+-
1 row in set (0.0 sec)
mysql> _
FROM_DAYS 예 1
mysql> select from_days("366");
-+------------------+-
 | from_days("366") |
-+------------------+-
 | 0001-01-01       |
-+------------------+-
1 row in set (0.0 sec)
mysql> _
FROM_DAYS 예 2

DATE_ADD(날짜,INTERVAL,추가분)

- 해당 날짜와 시간에 특정 날짜와 시간을 더해줍니다.
mysql> select date_add("16-10-10 06:10:30",interval 1 day);
-+----------------------------------------------+-
 | date_add("16-10-10 06:10:30",interval 1 day) |
-+----------------------------------------------+-
 | 2016-10-11 06:10:30                          |
-+----------------------------------------------+-
1 row in set (0.0 sec)
mysql> _
DATE_ADD 예 1

위 그림을 보면 하루가 추가된 것을 볼 수 있습니다.
여기에서 추가분의 종류에 대해 알아 보고 계속 예를 보여 드리겠습니다.
  • second - 초를 추가 합니다(interval 1 second)
  • minute - 분을 추가 합니다.(interval 1 minute)
  • hour - 시간을 추가 합니다.(interval 1 hour)
  • day - 일을 추가 합니다.(interval 1 day)
  • month - 달을 추가 합니다. .(interval 1 month)
  • year - 년을 추가 합니다. .(interval 1 year)
  • minute_second - 분과 초를 추가 합니다. (interval "1:1" minute_second)
  • hour_minute - 시간과 분을 추가 합니다. (interval "1:1" hour_minute)
  • day_hour - 일과 시간을 추가 합니다. (interval "1 1" day_hour)
  • year_month - 년과 월을 추가 합니다. (interval "1-1" year_month)
  • hour_second - 시간과 분, 초를 추가 합니다. (interval "1:1:1" hour_second)
  • day_minute - 일과 시간, 분을 추가 합니다.(interval "1 1:1" day_minute)
  • day_second - 일과 시간, 분, 초를 추가 합니다.(interval "1 1:1:1" day_second)
mysql> select date_add("16-10-10 06:10:30",interval "1:1:1" hour_second);
-+------------------------------------------------------------+-
 | date_add("16-10-10 06:10:30",interval "1:1:1" hour_second) |
-+------------------------------------------------------------+-
 | 2016-10-10 07:11:31                                        |
-+------------------------------------------------------------+-
1 row in set (0.0 sec)
mysql> _
DATE_ADD 예 2
mysql> select date_add("16-10-10 06:10:30",interval "1 1" day_hour);
-+-------------------------------------------------------+-
 | date_add("16-10-10 06:10:30",interval "1 1" day_hour) |
-+-------------------------------------------------------+-
 | 2016-10-11 07:10:30                                   |
-+-------------------------------------------------------+-
1 row in set (0.0 sec)
mysql> _
DATE_ADD 예 3

만약 날짜와 시간을 빼기를 원한다면 " - "를 사용하면 됩니다. 또 다른 방법은 DATE_SUB( ) 함수를 사용하는 것입니다.
mysql> select date_add("16-10-10 06:10:30",interval "-1 -1" day_hour);
-+---------------------------------------------------------+-
 | date_add("16-10-10 06:10:30",interval "-1 -1" day_hour) |
-+---------------------------------------------------------+-
 | 2016-10-09 05:10:30                                     |
-+---------------------------------------------------------+-
1 row in set (0.0 sec)
mysql> _
DATE_ADD 예 4
mysql> select date_sub("16-10-10 06:10:30",interval "1 1" day_hour);
-+-------------------------------------------------------+-
 | date_sub("16-10-10 06:10:30",interval "1 1" day_hour) |
-+-------------------------------------------------------+-
 | 2016-10-09 05:10:30                                   |
-+-------------------------------------------------------+-
1 row in set (0.0 sec)
mysql> _
DATE_ADD 예 5

PERIOD_DIFF(날짜1, 날짜2)

- 날짜1 과 날짜2 사이의 개월 수를 리턴합니다.
mysql> select period_diff(201610,201601);
-+----------------------------+-
 | period_diff(201610,201601) |
-+----------------------------+-
 |                          9 |
-+----------------------------+-
1 row in set (0.0 sec)
mysql> _

PERIOD_DIFF

5. 문자열 관련 함수


php 스크립트 프로그래밍을 하면서 php에서 지원하는 함수를 이용한 방법으로 많은 문자열 처리하게 될 것입니다. Mysql 역시 문자열을 처리하는 여러 가지 함수가 있습니다. 여러분들은 데이터를 데이터베이스에 저장할 때 php 함수에서 지원하는 함수를 사용할 수도 있지만 여기서 설명할 mysql 함수를 사용해도 됩니다. (문자열 함수는 결과 값이 정의된 길이보다 클 경우 NULL을 리턴합니다.)

HEX(n)

- 해당 10진수를 16진수로 리턴해 줍니다. (NULL은 NULL로 리턴)
mysql> select hex(4444);
-+-----------+-
 | hex(4444) |
-+-----------+-
 | 115C      |
-+-----------+-
1 row in set (0.0 sec)
mysql> _
HEX

OCT(n)

- 해당 10진수를 8진수로 리턴해 줍니다.(NULL -> NULL로 리턴)
mysql> select oct(4444);
-+-----------+-
 | oct(4444) |
-+-----------+-
 | 10534     |
-+-----------+-
1 row in set (0.0 sec)
mysql> _
OCT

BIN(n)

- 해당 10진수를 2진수로 리턴합니다. (NULL -> NULL로 리턴)
mysql> select bin(4444);
-+---------------+-
 | bin(4444)     |
-+---------------+-
 | 1000101011100 |
-+---------------+-
1 row in set (0.0 sec)
mysql> _
BIN

CONV(n , a , b)

- 해당 숫자를 a 형식의 진수에서 b 형식의 진수로 변환해서 리턴합니다. 앞에서 설명한 각 진수별 변환 방법의 기능을 다 가지고 있는 함수입니다.
(인자중 NULL이 있으면 NULL을 리턴합니다. 2 ~36진까지 가능)
mysql> select conv(44,10,2);
-+---------------+-
 | conv(44,10,2) |
-+---------------+-
 | 101100        |
-+---------------+-
1 row in set (0.0 sec)
mysql> _
CONV 예 1
mysql> select conv("3b",10,16);
-+------------------+-
 | conv("3b",10,16) |
-+------------------+-
 | 3                |
-+------------------+-
1 row in set (0.0 sec)
mysql> _
CONV 예 2

ASCII(문자열)

- 해당 문자열의 처음 위치의 ASCII 코드를 리턴합니다.(NULL -> NULL로 리턴 합니다.)
mysql> select ascii("joyho");
-+----------------+-
 | ascii("joyho") |
-+----------------+-
 | 106            |
-+----------------+-
1 row in set (0.0 sec)
mysql> _
ASCII

FIELD(Nstring , string , …)

- Nstring에 해당하는 문자열이 몇 번째 인지 리턴합니다.
mysql> select field("joyho","net","dev","joyho","joyho.net");
-+-----------------------------------------------+-
 | field("joyho","net","dev","joyho","joyho.net") |
-+-----------------------------------------------+-
 |                                              3 |
-+-----------------------------------------------+-
1 row in set (0.0 sec)
mysql> _
FIELD

LOWER(문자열)

- 해당 문자열을 소문자로 변환해서 리턴합니다.(컴파일 시 선택한 문자 설정)
mysql> select lower("JOYHO","NET");
-+----------------------+-
 | lower("JOYHO","NET") |
-+----------------------+-
 | joyho net            |
-+----------------------+-
1 row in set (0.0 sec)
mysql> _
LOWER

UPPER(문자열)

- 해당 문자열을 대문자로 변환해서 리턴합니다. (컴파일 시 선택한 문자 설정)
mysql> select upper("joyho","net");
-+----------------------+-
 | upper("joyho","net") |
-+----------------------+-
 | JOYHO NET            |
-+----------------------+-
1 row in set (0.0 sec)
mysql> _
UPPER

LOAD_FILE(파일명)

- 64kb 보다 작은 내용의 파일을 읽어 들여 문자열로 리턴합니다. (64kb보다 클 경우 NULL을 리턴합니다.)
mysql> select load_file("/home/userid/test.txt");
-+------------------------------------+-
 | load_file("/home/userid/test.txt") |
-+------------------------------------+-
 | 안녕하세요?
   joyho.net ~~                       |
-+------------------------------------+-
1 row in set (0.0 sec)
mysql> _
LOAD_FILE

SPACE(n)

- 해당 인자의 수 만큼 공백을 리턴합니다.
mysql> select space(4);
-+----------+-
 | space(4) |
-+----------+-
 |          |
-+----------+-
1 row in set (0.0 sec)
mysql> _
SPACE

REVERSE(문자열)

- 해당 문자열의 순서를 바꾸어 리턴합니다.
mysql> select reverse("joyho");
-+------------------+-
 | reverse("joyho") |
-+------------------+-
 | ohyoj            |
-+------------------+-
1 row in set (0.0 sec)
mysql> _
REVERSE

INSERT(문자열, a , b , 문자열1)

- 해당 문자열을 a 위치부터 b 크기 만큼 문자열1을 넣어 리턴합니다.
mysql> select insert("joyho",4,0,"123");
-+---------------------------+-
 | insert("joyho",4,0,"123") |
-+---------------------------+-
 | joy123ho                  |
-+---------------------------+-
1 row in set (0.0 sec)
mysql> _
INSERT

SUBSTRING_INDEX(문자열, a , count )

- 해당 문자열을 a로 구분해서 배열로 만들고 count 수만큼 리턴해줍니다. 오른쪽부터 출력하길 원하면 음수를 적으면 됩니다.
mysql> select substring_index("search.joyho.net",".",-2);
-+--------------------------------------------+-
 | substring_index("search.joyho.net",".",-2) |
-+--------------------------------------------+-
 | joyho.net                                  |
-+--------------------------------------------+-
1 row in set (0.0 sec)
mysql> _
SUBSTRING_INDEX

REPEAT(문자열 , c )

- 해당 문자열을 c 만큼 반복해서 리턴합니다.
mysql> select repeat("joyho",4);
-+-------------------------+-
 | repeat("joyho",4)       |
-+-------------------------+-
 | joyho joyho joyho joyho |
-+-------------------------+-
1 row in set (0.0 sec)
mysql> _
REPEAT

LTRIM(문자열)

- 해당 문자열의 왼쪽 공백을 제거합니다.
mysql> select ltrim("    joyho.net");
-+-------------------------------+-
 | select ltrim("    joyho.net") |
-+-------------------------------+-
 | joyho.net                     |
-+-------------------------------+-
1 row in set (0.0 sec)
mysql> _
LTRIM

RTRIM(문자열)

- 해당 문자열의 오른쪽 공백을 제거하고 리턴합니다.
mysql> select rtrim("joyho.net    ");
-+------------------------+-
 | rtrim("joyho.net    ") |
-+------------------------+-
 | joyho.net              |
-+------------------------+-
1 row in set (0.0 sec)
mysql> _
RTRIM

TRIM(옵션 a FROM 문자열)

- 주어진 옵션에 따라 a 문자를 제거하고 리턴합니다.
옵션에는 LEADING | TRAILING | BOTH 등이 있으며 각각 앞쪽 공백제거 | 뒤쪽 공백 제거 | 앞뒤 공백 제거입니다.
mysql> select trim(trailing "net" from "net.search.joyho.net");
-+--------------------------------------------------+-
 | trim(trailing "net" from "net.search.joyho.net") |
-+--------------------------------------------------+-
 | net.search.joyho.                                |
-+--------------------------------------------------+-
1 row in set (0.0 sec)
mysql> _
TRIM 예 1
mysql> select trim(leading "net" from "net.search.joyho.net");
-+-------------------------------------------------+-
 | trim(leading "net" from "net.search.joyho.net") |
-+-------------------------------------------------+-
 | .search.joyho.net                               |
-+-------------------------------------------------+-
1 row in set (0.0 sec)
mysql> _
TRIM 예 2
mysql> select trim(both "net" from "net.search.joyho.net");
-+----------------------------------------------+-
 | trim(both "net" from "net.search.joyho.net") |
-+----------------------------------------------+-
 | .search.joyho.                               |
-+----------------------------------------------+-
1 row in set (0.0 sec)
mysql> _
TRIM 예 3

CONCAT(문자열, 문자열 …..)

- 해당 문자열을 이어 줍니다.
이 함수는 php의 " . "을 이용한 문자열 연결 방법과 유사 합니다. (NULL -> NULL로 리턴합니다.)
mysql> select concat("joyho",".net"," developer");
-+-------------------------------------+-
 | concat("joyho",".net"," developer") |
-+-------------------------------------+-
 | joyho.net developer                 |
-+-------------------------------------+-
1 row in set (0.0 sec)
mysql> _
CONCAT

LEFT(문자열,n)

- n 만큼 해당 문자열을 왼쪽부터 리턴합니다.
mysql> select left("search.joyho.net",12);
-+-----------------------------+-
 | left("search.joyho.net",12) |
-+-----------------------------+-
 | search.joyho                |
-+-----------------------------+-
1 row in set (0.0 sec)
mysql> _
LEFT

RIGHT(문자열, n)

- n만큼 해당 문자열을 오른쪽부터 리턴합니다.
mysql> select right("search.joyho.net",12);
-+------------------------------+-
 | right("search.joyho.net",12) |
-+------------------------------+-
 | ch.joyho.net                 |
-+------------------------------+-
1 row in set (0.0 sec)
mysql> _
RIGHT

LOCATE(a , b)

- a(문자열)가 b(문자열)에서 처음부터 몇 번째 위치인지 리턴합니다.
mysql> select locate("joyho","search.joyho.net");
-+------------------------------------+-
 | locate("joyho","search.joyho.net") |
-+------------------------------------+-
 |                                  8 |
-+------------------------------------+-
1 row in set (0.0 sec)
mysql> _
LOCATE

LPAD(문자열 , a , b)

- 해당 문자열에 a 길이 만큼 b 문자를 왼쪽부터 넣어 리턴합니다.
mysql> select lpad("joyho",10,"*");
-+----------------------+-
 | lpad("joyho",10,"*") |
-+----------------------+-
 | *****joyho           |
-+----------------------+-
1 row in set (0.0 sec)
mysql> _
LPAD

RPAD(문자열, a , b)

- 해당 문자열에 a 길이만큼 b 문자를 오른쪽에 넣어 리턴합니다.
mysql> select rpad("joyho",10,"*");
-+----------------------+-
 | rpad("joyho",10,"*") |
-+----------------------+-
 | joyho*****           |
-+----------------------+-
1 row in set (0.0 sec)
mysql> _
RPAD

여기까지 문자열 함수의 대부분을 설명했습니다.
몇 가지 빠진 함수들도 있지만 여기 있는 것만으로도 대부분을 표현하기는 충분합니다.

6. 기타 함수들


mysql의 수학 함수는 여기서 다루지 않도록 하겠습니다. 대부분의 경우 php 함수가 대신 할 수 있기 때문에 구지 mysql 함수를 이용해 수학연산을 할 필요는 없습니다. 하지만 어느 경우든 꼭 사용해야만 할 경우는 mysql 매뉴얼을 보시기 바랍니다. 짧은 영어 실력으로도 충분히 보실 수 있는 매뉴얼이기 때문에 걱정은 필요 없습니다. 그럼, 여기서는 자주 사용되는 나머지 함수들을 설명하겠습니다.

USER()

- 현재 mysql에 접속 중인 사용자 이름을 리턴합니다.
mysql> select user();
-+----------------+-
 | user()         |
-+----------------+-
 | root@localhost |
-+----------------+-
1 row in set (0.0 sec)
mysql> _
USER

VERSION( )

- mysql의 버전을 리턴해 줍니다.
mysql> select version();
-+-----------+-
 | version() |
-+-----------+-
 | 5.1.73    |
-+-----------+-
1 row in set (0.0 sec)
mysql> _
VERSION

PASSWORD(문자열)

- 이 함수는 mysql의 데이터 베이스에 문자열을 암호화 해서 저장해 줍니다. 대부분의 경우 사용자 인증에 이용합니다. 즉, 암호화된 문자열끼리 비교함으로 해서 인증을 하는 것입니다.
뒤에 설명할 admin tool의 사용자 인증 역시 이 방법을 이용했습니다.
mysql> select password("joyho.net");
-+-------------------------------------------+-
 | password("joyho.net")                     |
-+-------------------------------------------+-
 | *6A8A593F0EC3C755C3AB76A5A77588EF2CA1371E |
-+-------------------------------------- ----+-
1 row in set (0.0 sec)
mysql> _

PASSWORD

 

 

#sql #function #함수 #주요함수



  • 카카오스토리로 보내기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기
  • 더보기
  • Naver Blog로 보내기
  • TUMBLR로 보내기
  • LinkedIN으로 보내기
  • REDDIT으로 보내기
  • delicio으로 보내기
  • pinterest으로 보내기
  • 블로거로 보내기
php jquery cloud HTML 무설치 클라우드 script 팀박스 TEAMBOX 포터블 ssh css 기어s3 시그널 스마트워치 공유캐시삭제 facebook 삼성 페이스북 소스 코메디 IT CNET VR가상현실 싸이이비즈 ColorScripter GoingHome LGU+ 기업용클우드 sgnl 스마트시곗줄 extension 3DBChip 아스키코드 드라이버 나무클라우드 미국정보교표준부호 ASCII 아스키 selectbox chrome google 손가락통화 MiBand2 미밴드2 샤오미 Xiaomi 색상표 구글 크롬 확장프로램 제어 Comedy 팝업창 openssl encrypt decrypt 암호화 PHPParser 문서파싱 mRemote 서버관리프로그램 RemoteDesktop PHP암호화 array 레이어 오늘하루닫기 줄바꿈 word-break white-spac CURL/a> ajax 말줄임표 배열 컬러코드 ColorCode ssh2 원태연 시집 넌가끔가다 마술 수여니 재밋다 magic 수호천사 재미 ZOAPROJECT RADAZoa sftp jqueryui datepicker 하늘 하트 구름 김윤아 뮤직비디오 RADA Gamarjobat