SQL | MySQL 주요 함수들
페이지 정보
작성일2016-10-10 17:50 조회3,394회관련링크
본문
목차
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> _
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
Developer 관련 글 보기
- PHP | (PHP/MySQL) password_hash / password / old_password 2022-03-02
- PHP | 텔레그램(telegram) 봇 API 응답 값 살펴보기 2019-10-01
- PHP | [PHP] 텔레그램 api로 push 받기(Webhook) 2019-10-01
- Server | PHP 7.3, 7.2, 7.1 on CentOS/RHEL 6.10 2019-06-24
- Server | 사설인증서 생성을 위한 OpenSSL (for Windows) 사용방법 2019-06-14
- Script | jquery live, bind, delegate 를 on 대체 2018-01-16
- HTML | ASCII Code 특수기호 모음 2016-12-10