mysql 함수들

mysql의 함수
MYSQL -1-
6.mysql의 주요 함수
6.1 그룹함수
연산의 순서를 명확하게 하기 위해 사용된다.
6.1.1 () 괄호
mysql> SELECT 1+3*5;
+-------+
| 1+3*5 |
+-------+
| 16 |
+-------+
1 row in set (0.00 sec)
mysql> SELECT (1+3)*5;
+---------+
| (1+3)*5 |
+---------+
| 20 |
+---------+
1 row in set (0.06 sec)
6.2 일반적인 산술 연산자
일반적인 연산자들이 그대로 사용된다. 연산에 사용되는 숫자가 모두 정수일 경우 -, _,
* 연산의 결과 값은 BIGINT(64bit)로 표현된다.
6.2.1 + (더하기)
mysql> SELECT 3+5;
+-----+
| 3+5 |
+-----+
| 8 |
+-----+
1 row in set (0.00 sec)
6.2.2 - (빼기)
mysql> SELECT 3-5;
+-----+
| 3-5 |
+-----+
| -2 |
+-----+
1 row in set (0.00 sec)
mysql의 함수
MYSQL -2-
6.2.3 * (곱하기)
mysql> SELECT 3*5;
+-----+
| 3*5 |
+-----+
| 15 |
+-----+
1 row in set (0.00 sec)
6.2.4 / (나누기)
mysql> SELECT 3/5;
+------+
| 3/5 |
+------+
| 0.60 |
+------+
1 row in set (0.02 sec)
6.3 논리 연산자
모든 논리 연산의 결과 값은 1(TRUE, 참) 또는 0(FALSE, 거짓) 중의 하나이다.
6.3.1 ! (NOT)
부정 : NOT은 1.이면 0을 0이면 1을 리턴한다.
예외 : NOT NULL의 경우는 NULL을 리턴
mysql> SELECT NOT 1;
+-------+
| NOT 1 |
+-------+
| 0 |
+-------+
1 row in set (0.00 sec)
mysql> SELECT NOT NULL;
+----------+
| NOT NULL |
+----------+
| NULL |
+----------+
1 row in set (0.01 sec)
mysql> SELECT !(1+1);
+--------+
| !(1+1) |
+--------+
| 0 |
+--------+
mysql의 함수
MYSQL -3-
1 row in set (0.01 sec)
mysql> SELECT ! 1+1;
+-------+
| ! 1+1 |
+-------+
| 1 |
+-------+
1 row in set (0.00 sec)
6.3.2 || (OR)
또는 으로 해석하며 인수 모두 0이거나 NULL이 아니면 1을 리턴
mysql> SELECT 0 || 0;
+--------+
| 0 || 0 |
+--------+
| 0 |
+--------+
1 row in set (0.00 sec)
mysql> SELECT 1 || 0;
+--------+
| 1 || 0 |
+--------+
| 1 |
+--------+
1 row in set (0.01 sec)
mysql> SELECT 1 || NULL;
+-----------+
| 1 || NULL |
+-----------+
| 1 |
+-----------+
1 row in set (0.01 sec)
6.3.3 && (AND)
그리고로 해석하며 인수 중 하나라도 0 또는 NULL이면 0을, 아니면 1을 리턴
6.4 비교 연산자
모든 비교 연산의 결과값은 1(TRUE, 참) 또는 0(FALSE, 거짓) 중의 하나이다 아래의
함수들은 문자열 혹은 숫자열에 사용될 수 있으며 필요에 따라 문자열은 숫자 열로 또
는 숫자 열이 문자열로 바뀐다.
mysql의 함수
MYSQL -4-
비교 연산 수행의 규칙
1. 인수가 모두 NULL이면 비교연산의 결과도 NULL이다.
2. 인수가 모두 문자열이면, 문자열로 비교된다.
3. 인수가 모두 정수이면 정수로 비교된다.
4. 한쪽 인수가 TIMESTAMP 또는 DATETIME 타입이고 다른 쪽이 숫자이면
TIMESTAMP또는 DATETIME으로 변환되어 비교된다.
5. 그 밖의 모든 경우에는 부동소수점 실수로 비교된다.
6.4.1 = (같다)
mysql> SELECT 1 = 0;
+-------+
| 1 = 0 |
+-------+
| 0 |
+-------+
1 row in set (0.01 sec)
mysql> SELECT 1 = 1;
+-------+
| 1 = 1 |
+-------+
| 1 |
+-------+
1 row in set (0.01 sec)
mysql> SELECT '2' = 2;
+---------+
| '2' = 2 |
+---------+
| 1 |
+---------+
1 row in set (0.00 sec)
6.4.2 <>, != (같지 않다)
mysql> SELECT 'ATOM' <> 'ATOMI';
+-------------------+
| 'ATOM' <> 'ATOMI' |
+-------------------+
| 1 |
+-------------------+
1 row in set (0.01 sec)
mysql> SELECT '안석식' <> '안석식';
+----------------------+
| '안석식' <> '안석식' |
+----------------------+
mysql의 함수
MYSQL -5-
| 0 |
+----------------------+
1 row in set (0.00 sec)
6.4.3 <= (작거나 같다)
mysql> SELECT 1 <= 10;
+---------+
| 1 <= 10 |
+---------+
| 1 |
+---------+
1 row in set (0.00 sec)
mysql> SELECT 100 <= 10;
+-----------+
| 100 <= 10 |
+-----------+
| 0 |
+-----------+
1 row in set (0.00 sec)
6.4.4 >= (크거나 같다)
mysql> SELECT 10 > 5;
+--------+
| 10 > 5 |
+--------+
| 1 |
+--------+
1 row in set (0.00 sec)
mysql> SELECT 5 > 10;
+--------+
| 5 > 10 |
+--------+
| 0 |
+--------+
1 row in set (0.00 sec)
6.4.5 < (작다)
mysql> SELECT 5 < 10;
+--------+
| 5 < 10 |
+--------+
| 1 |
+--------+
1 row in set (0.00 sec)
mysql의 함수
MYSQL -6-
mysql> SELECT 10 < 5;
+--------+
| 10 < 5 |
+--------+
| 0 |
+--------+
1 row in set (0.00 sec)
6.4.6 > (크다)
mysql> SELECT 10 > 5;
+--------+
| 10 > 5 |
+--------+
| 1 |
+--------+
1 row in set (0.00 sec)
mysql> SELECT 5 > 10;
+--------+
| 5 > 10 |
+--------+
| 0 |
+--------+
1 row in set (0.00 sec)
6.4.7 <=> (한쪽이 NULL인 경우에만 0)
mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
+---------+---------------+------------+
| 1 <=> 1 | NULL <=> NULL | 1 <=> NULL |
+---------+---------------+------------+
| 1 | 1 | 0 |
+---------+---------------+------------+
1 row in set (0.00 sec)
6.4.8 ISNULL (expr)
만일 표현식 expr이 NULL이면 1을 그렇지 않으면 0을 리턴한다.
mysql> SELECT ISNULL(1+1);
+-------------+
| ISNULL(1+1) |
+-------------+
| 0 |
+-------------+
1 row in set (0.04 sec)
mysql> SELECT ISNULL(1/0);
+-------------+
| ISNULL(1/0) |
mysql의 함수
MYSQL -7-
+-------------+
| 1 |
+-------------+
1 row in set (0.01 sec)
6.4.9 expr BETWEEN min AND max
만일 표현식이 expr이 min과 max값 사이에 존재한다면 1을 그렇지 않으면 0을 리턴한
다. expr이 문자열인지 숫자인지 따라 비교 방법이 결정된다.
mysql> SELECT 10 BETWEEN 20 AND 30;
+----------------------+
| 10 BETWEEN 20 AND 30 |
+----------------------+
| 0 |
+----------------------+
1 row in set (0.00 sec)
mysql> SELECT 'C' BETWEEN 'B' AND 'D';
+-------------------------+
| 'C' BETWEEN 'B' AND 'D' |
+-------------------------+
| 1 |
+-------------------------+
1 row in set (0.01 sec)
6.4.10 expr IN (value,...)
만일 표현식 expr이 괄호 안의 목록에 존재하면 1을 아니면 0을 리턴한다.
mysql> SELECT 'ATOM' IN ('ATOMI','안석식');
+------------------------------+
| 'ATOM' IN ('ATOMI','안석식') |
+------------------------------+
| 0 |
+------------------------------+
1 row in set (0.00 sec)
mysql> SELECT '안석식' IN ('ATOMI','안석식');
+--------------------------------+
| '안석식' IN ('ATOMI','안석식') |
+--------------------------------+
| 1 |
+--------------------------------+
1 row in set (0.01 sec)
6.5 문자열 비교 함수
6.5.1 LIKE
WHERE 조건 절에서 LIKE에서는 다음 2가지의 와일드카드 문자(wildcard characters)
mysql의 함수
MYSQL -8-
를 쓸 수 있다.
% : 0또는 하나 이상의 문자에 해당한다.
_ : 하나의 문자에 해당한다.
mysql> SELECT 'ATOM!' LIKE 'ATOM_';
+----------------------+
| 'ATOM!' LIKE 'ATOM_' |
+----------------------+
| 1 |
+----------------------+
1 row in set (0.01 sec)
mysql> SELECT 'ATOM' LIKE 'A%';
+------------------+
| 'ATOM' LIKE 'A%' |
+------------------+
| 1 |
+------------------+
1 row in set (0.01 sec)
mysql> SELECT 'ATOMI' LIKE 'ATOM';
+---------------------+
| 'ATOMI' LIKE 'ATOM' |
+---------------------+
| 0 |
+---------------------+
1 row in set (0.00 sec)
6.6 형 변환 연산자
6.6.1 BINARY
BINARY 연산자는 다음에 따라오는 문자열을 바이너리 문자열로 바꿔서 연산한다. 바이
너리 문자열의 큰 특징은 바로 대소문자를 구별한다는 것이다. 컬럼 자체가 바이너리
문자열로 정의되어 있지 않더라도 대소문자를 구분해 문자열을 비교해야 할 경우 상용
된다.
mysql> SELECT "A" = "a";
+-----------+
| "A" = "a" |
+-----------+
| 1 |
+-----------+
1 row in set (0.01 sec)
mysql> SELECT BINARY "A" = "a";
+------------------+
| BINARY "A" = "a" |
+------------------+
mysql의 함수
MYSQL -9-
| 0 |
+------------------+
1 row in set (0.01 sec)
6.7 흐름 제어 함수
6.7.1 IFNULL(expr1, expr2)
만일 expr1이 NULL이 아닐 경우 IFNULL() 함수는 expr1 자체의 값을 리턴하고 그렇
지 않을 경우 expr2을 리턴한다.
mysql> SELECT IFNULL(1,0);
+-------------+
| IFNULL(1,0) |
+-------------+
| 1 |
+-------------+
1 row in set (0.00 sec)
mysql> SELECT IFNULL(0,10);
+--------------+
| IFNULL(0,10) |
+--------------+
| 0 |
+--------------+
1 row in set (0.00 sec)
mysql> SELECT IFNULL(1/0,10);
+----------------+
| IFNULL(1/0,10) |
+----------------+
| 10 |
+----------------+
1 row in set (0.00 sec)
6.7.2 IF(expr1, expr2, expr3)
만일 expr1이 참이면 expr2를 리턴하고 그렇지 않으면 expr3을 리턴한다.
mysql> SELECT IF(1<2, 'YES', 'NO');
+----------------------+
| IF(1<2, 'YES', 'NO') |
+----------------------+
| YES |
+----------------------+
1 row in set (0.01 sec)
mysql> SELECT IF(1>2,10,20);
+---------------+
| IF(1>2,10,20) |
+---------------+
mysql의 함수
MYSQL -10-
| 20 |
+---------------+
1 row in set (0.01 sec)
6.8 수학 함수
모든 수학 함수는 오류가 생기면 NULL을 리턴한다.
6.8.1 -
음수 부호, 숫자의 부호를 바꾼다.
mysql> SELECT - 10;
+------+
| - 10 |
+------+
| -10 |
+------+
1 row in set (0.00 sec)
6.8.2 ABS(X)
X의 절대값을 구한다.
mysql> SELECT ABS(2);
+--------+
| ABS(2) |
+--------+
| 2 |
+--------+
1 row in set (0.00 sec)
mysql> SELECT ABS(-2);
+---------+
| ABS(-2) |
+---------+
| 2 |
+---------+
1 row in set (0.00 sec)
6.8.3 SIGN(X)
X의 부호에 따라 음수일 경우 ?1, 0일 경우 0, 양수일 경우 1을 리턴한다.
mysql> SELECT SIGN(-10);
+-----------+
| SIGN(-10) |
+-----------+
| -1 |
+-----------+
1 row in set (0.03 sec)
mysql의 함수
MYSQL -11-
mysql> SELECT SIGN(0);
+---------+
| SIGN(0) |
+---------+
| 0 |
+---------+
1 row in set (0.00 sec)
mysql> SELECT SIGN(10);
+----------+
| SIGN(10) |
+----------+
| 1 |
+----------+
1 row in set (0.00 sec)
6.8.4 MOD(N, M), %
나머지 연산자로 N을 M으로 나눈 나머지를 구한다.
mysql> SELECT MOD(100,30);
+-------------+
| MOD(100,30) |
+-------------+
| 10 |
+-------------+
1 row in set (0.00 sec)
6.8.5 FLOOR(X)
X보다 크지 않은 최대 정수를 구한다.
mysql> SELECT FLOOR(10.54);
+--------------+
| FLOOR(10.54) |
+--------------+
| 10 |
+--------------+
1 row in set (0.00 sec)
mysql> SELECT FLOOR(-10.54);
+---------------+
| FLOOR(-10.54) |
+---------------+
| -11 |
+---------------+
1 row in set (0.01 sec)
6.8.6 CEILING(X)
X보다 작지 않은 최소 정수를 구한다.
mysql> SELECT CEILING(10.54);
mysql의 함수
MYSQL -12-
+----------------+
| CEILING(10.54) |
+----------------+
| 11 |
+----------------+
1 row in set (0.16 sec)
mysql> SELECT CEILING(-10.54);
+-----------------+
| CEILING(-10.54) |
+-----------------+
| -10 |
+-----------------+
1 row in set (0.01 sec)
6.8.7 ROUND(X)
X의 반올림 값을 구한다.
mysql> SELECT ROUND(10.53);
+--------------+
| ROUND(10.53) |
+--------------+
| 11 |
+--------------+
1 row in set (0.05 sec)
6.8.8 ROUND(X, D)
X를 반올림해서 소수점아래 D 자리까지 구한다. 만일 D가 0이면 소수점 아래 부분을
생략된다.
mysql> SELECT ROUND(10.569, 2);
+------------------+
| ROUND(10.569, 2) |
+------------------+
| 10.57 |
+------------------+
1 row in set (0.00 sec)
mysql> SELECT ROUND(10.569, 0);
+------------------+
| ROUND(10.569, 0) |
+------------------+
| 11 |
+------------------+
1 row in set (0.01 sec)
6.8.9 EXP(X)
e^X 값을 구한다.
mysql의 함수
MYSQL -13-
mysql> SELECT EXP(1);
+----------+
| EXP(1) |
+----------+
| 2.718282 |
+----------+
1 row in set (0.00 sec)
mysql> SELECT EXP(2);
+----------+
| EXP(2) |
+----------+
| 7.389056 |
+----------+
1 row in set (0.01 sec)
6.8.10 LOG(X)
자연로그 값을 구한다.
mysql> SELECT LOG(2);
+----------+
| LOG(2) |
+----------+
| 0.693147 |
+----------+
1 row in set (0.05 sec)
6.8.11 LOG10(X)
상용로그 값을 구한다.
mysql> SELECT LOG10(2);
+----------+
| LOG10(2) |
+----------+
| 0.301030 |
+----------+
1 row in set (0.05 sec)
6.8.12 POW(X, Y), POWER(X, Y)
X의 Y승 값을 구한다.
mysql> SELECT POW(5,5);
+-------------+
| POW(5,5) |
+-------------+
| 3125.000000 |
+-------------+
1 row in set (0.00 sec)
mysql> SELECT POWER(5,5);
mysql의 함수
MYSQL -14-
+-------------+
| POWER(5,5) |
+-------------+
| 3125.000000 |
+-------------+
1 row in set (0.00 sec)
mysql> SELECT POW(5,-5);
+-----------+
| POW(5,-5) |
+-----------+
| 0.000320 |
+-----------+
1 row in set (0.01 sec)
mysql> SELECT POWER(5,-5);
+-------------+
| POWER(5,-5) |
+-------------+
| 0.000320 |
+-------------+
1 row in set (0.00 sec)
6.8.13 SQRT(X)
X의 근을 구한다.
mysql> SELECT SQRT(5);
+----------+
| SQRT(5) |
+----------+
| 2.236068 |
+----------+
1 row in set (0.00 sec)
6.8.14 PI()
파이 값을 리턴한다.
mysql> SELECT PI();
+----------+
| PI() |
+----------+
| 3.141593 |
+----------+
1 row in set (0.00 sec)
6.8.15 COS(X)
X의 코사인 값을 굿한다. (X는 라디안)
mysql> SELECT COS(PI());
+-----------+
mysql의 함수
MYSQL -15-
| COS(PI()) |
+-----------+
| -1.000000 |
+-----------+
1 row in set (0.06 sec)
6.8.16 SIN(X)
X의 사인 값을 구한다. (X는 라디안)
mysql> SELECT SIN(PI()+5);
+-------------+
| SIN(PI()+5) |
+-------------+
| 0.958924 |
+-------------+
1 row in set (0.00 sec)
6.8.17 TAN(X)
X의 탄젠트 값을 구한다. (X는 라디안)
mysql> SELECT TAN(PI()+5);
+-------------+
| TAN(PI()+5) |
+-------------+
| -3.380515 |
+-------------+
1 row in set (0.01 sec)
6.8.18 ACOS(X)
X의 아크 코사인 값을 구한다. (X가 ?1~1 사이의 값이 아니면 NULL 리턴)
mysql> SELECT ACOS(1.45);
+------------+
| ACOS(1.45) |
+------------+
| NULL |
+------------+
1 row in set (0.00 sec)
mysql> SELECT ACOS(0);
+----------+
| ACOS(0) |
+----------+
| 1.570796 |
+----------+
1 row in set (0.00 sec)
mysql> SELECT ACOS(-1);
+----------+
| ACOS(-1) |
mysql의 함수
MYSQL -16-
+----------+
| 3.141593 |
+----------+
1 row in set (0.00 sec)
6.8.19 ASIN(X)
X의 아크 사인 값을 구한다. (X가 ?1~1 사이의 값이 아니면 NULL 리턴)
mysql> SELECT ASIN(1.45);
+------------+
| ASIN(1.45) |
+------------+
| NULL |
+------------+
1 row in set (0.00 sec)
mysql> SELECT ASIN(0.25);
+------------+
| ASIN(0.25) |
+------------+
| 0.252680 |
+------------+
1 row in set (0.00 sec)
6.8.20 ATAN(X)
X의 아크 탄젠트 값을 구한다.
mysql> SELECT ATAN(1.45);
+------------+
| ATAN(1.45) |
+------------+
| 0.967047 |
+------------+
1 row in set (0.04 sec)
6.8.21 ATAN2(X, Y)
X와 Y사이의 아크 탄젠트 값을 구한다. ATAN(Y/X)와 같다.
mysql> SELECT ATAN2(1.45,2);
+---------------+
| ATAN2(1.45,2) |
+---------------+
| 0.627308 |
+---------------+
1 row in set (0.01 sec)
6.8.22 COT(X)
X의 코탄젠트 값을 구한다.
mysql의 함수
MYSQL -17-
mysql> SELECT COT(1.45);
+------------+
| COT(1.45) |
+------------+
| 0.12138732 |
+------------+
1 row in set (0.00 sec)
mysql> SELECT COT(0);
+--------+
| COT(0) |
+--------+
| NULL |
+--------+
1 row in set (0.01 sec)
6.8.23 RAND(), RAND(N)
0과 1.0 사이의 난수를 만들어 낸다.
N이 주어질 경우 난수 발생을 위한 시드(seed) 로 사용된다.
mysql> SELECT RAND();
+-----------------+
| RAND() |
+-----------------+
| 0.7502322306393 |
+-----------------+
1 row in set (0.01 sec)
mysql> SELECT RAND();
+------------------+
| RAND() |
+------------------+
| 0.20788959060599 |
+------------------+
1 row in set (0.01 sec)
mysql> SELECT RAND();
+------------------+
| RAND() |
+------------------+
| 0.78875129184569 |
+------------------+
1 row in set (0.00 sec)
mysql> SELECT RAND(10);
+------------------+
| RAND(10) |
+------------------+
| 0.18109053110805 |
+------------------+
mysql의 함수
MYSQL -18-
1 row in set (0.00 sec)
mysql> SELECT RAND(15);
+------------------+
| RAND(15) |
+------------------+
| 0.18109054787186 |
+------------------+
1 row in set (0.01 sec)
6.8.24 LEAST(X, Y, ...)
주어진 인수 중 가장 작은 것을 찾아낸다.
mysql> SELECT LEAST(4,345,233,1,44,32);
+--------------------------+
| LEAST(4,345,233,1,44,32) |
+--------------------------+
| 1 |
+--------------------------+
1 row in set (0.00 sec)
6.8.25 GREATEST(X, Y, ...)
주어진 인수 중 가장 큰 것을 찾아낸다.
mysql> SELECT GREATEST(4,345,233,1,44,32);
+-----------------------------+
| GREATEST(4,345,233,1,44,32) |
+-----------------------------+
| 345 |
+-----------------------------+
1 row in set (0.00 sec)
6.8.26 RADIANS(X)
숫자 X를 소수점 아래 D자리까지만 보여준다.
mysql> SELECT RADIANS(90);
+-----------------+
| RADIANS(90) |
+-----------------+
| 1.5707963267949 |
+-----------------+
1 row in set (0.01 sec)
6.8.27 TRUNCATE(X,D)
숫자 X를 소수점 아래 D자리까지만 보여준다.
mysql> SELECT TRUNCATE(18.99999, 3);
+-----------------------+
| TRUNCATE(18.99999, 3) |
mysql의 함수
MYSQL -19-
+-----------------------+
| 18.999 |
+-----------------------+
1 row in set (0.00 sec)
6.9 문자열 함수
문자열 함수는 결과값의 길이가 max_allowed_packet에서 정의된 것보다 클 경우
NULL을 리턴한다.
6.9.1 ASCII(str)
문자열 str의 가장 좌측에 위치한 문자의 ASCII 코드값을 알려준다. 문자열이 비어있으
면 0을, 인수가 NULL이면 NULL을 리턴한다.
mysql> SELECT ASCII('1');
+------------+
| ASCII('1') |
+------------+
| 49 |
+------------+
1 row in set (0.01 sec)
6.9.2 BIN(N)
10진수 N을 2진수 형식으로 바꿔준다.
mysql> SELECT BIN(10);
+---------+
| BIN(10) |
+---------+
| 1010 |
+---------+
1 row in set (0.06 sec)
6.9.3 OCT(N)
10진수 N을 8진수 형식으로 바꿔준다.
mysql> SELECT OCT(10);
+---------+
| OCT(10) |
+---------+
| 12 |
+---------+
1 row in set (0.00 sec)
6.9.4 HEX(N)
10진수 N을 16진수 형식으로 바꿔준다.
mysql의 함수
MYSQL -20-
mysql> SELECT HEX(10);
+---------+
| HEX(10) |
+---------+
| A |
+---------+
1 row in set (0.03 sec)
6.9.5 CHAR(N,...)
CHAR() 정수 N에 해당하는 ASCII 코드 값으로 변환해 출력한다.
mysql> SELECT CHAR(77,121,83,81,76);
+-----------------------+
| CHAR(77,121,83,81,76) |
+-----------------------+
| MySQL |
+-----------------------+
1 row in set (0.00 sec)
6.9.6 CONCAT(X,Y,...)
문자열을 이어준다. 인수가 2개 이상 되어야 하며 하나라도 NULL이 있으면 NULL이
리턴된다.
mysql> SELECT CONCAT('Su','per','Atom',' ','안석식');
+----------------------------------------+
| CONCAT('Su','per','Atom',' ','안석식') |
+----------------------------------------+
| SuperAtom 안석식 |
+----------------------------------------+
1 row in set (0.02 sec)
6.9.7 LENGTH(str), OCTET_LENGTH(str), CHAR_LENGTH(str),
CHARACTER_LENGTH(str)
문자열 str의 길이를 리턴한다.
mysql> SELECT LENGTH('SUPER MYSQL');
+-----------------------+
| LENGTH('SUPER MYSQL') |
+-----------------------+
| 11 |
+-----------------------+
1 row in set (0.00 sec)
6.9.8 LOCATE(substr,str), POSITION(substr IN str)
문자열 str에서 처음으로 나오는 문자열 substr의 위치를 리턴한다. 만일 substr을 찾지
못한 경우 0을 리턴한다.
mysql> SELECT LOCATE('JU','KWANGJU');
mysql의 함수
MYSQL -21-
+------------------------+
| LOCATE('JU','KWANGJU') |
+------------------------+
| 6 |
+------------------------+
1 row in set (0.00 sec)
6.9.9 LPAD(str, len, padstr)
len 길이만큼 padstr 문자로 str의 왼쪽을 채워서 보여준다.
mysql> SELECT LPAD('ATOM',10,'!!!');
+-----------------------+
| LPAD('ATOM',10,'!!!') |
+-----------------------+
| !!!!!!ATOM |
+-----------------------+
1 row in set (0.00 sec)
6.9.10 RPAD(str, len, padstr)
len길이만큼 padstr 문자로 str의 오른쪽으로 채워서 보여준다.
mysql> SELECT LPAD('ATOM',10,'!!!');
+-----------------------+
| LPAD('ATOM',10,'!!!') |
+-----------------------+
| !!!!!!ATOM |
+-----------------------+
1 row in set (0.00 sec)
6.9.11 LEFT(str, len)
문자열 str을 왼쪽에서 len 길이만큼만 보여준다.
mysql> SELECT LEFT('KWANGJU UNIVERSITY',7);
+------------------------------+
| LEFT('KWANGJU UNIVERSITY',7) |
+------------------------------+
| KWANGJU |
+------------------------------+
1 row in set (0.00 sec)
6.9.12 RIGHT(str,len), SUBSTRING(str FROM len)
문자열 str을 오른쪽에서 len 길이만큼만 보여준다.
mysql> SELECT RIGHT('KWANGJU UNIVERSITY',10);
+--------------------------------+
| RIGHT('KWANGJU UNIVERSITY',10) |
+--------------------------------+
| UNIVERSITY |
+--------------------------------+
mysql의 함수
MYSQL -22-
1 row in set (0.00 sec)
6.9.13 SUBSTRING(str, pos, len), SUBSTRING(str FROM pos FOR
len), MID(str, pos, len)
문자열 str을 pos 위치에서 len 길이만큼만 보여준다.
mysql> SELECT SUBSTRING('APACHE+MYSQL+PHP',8,5);
+-----------------------------------+
| SUBSTRING('APACHE+MYSQL+PHP',8,5) |
+-----------------------------------+
| MYSQL |
+-----------------------------------+
1 row in set (0.00 sec)
6.9.14 SUBSTRING(str, pos)
문자열 str을 pos 위치에서 끝까지 보여준다.
mysql> SELECT SUBSTRING('APACHE+MYSQL+PHP',8);
+---------------------------------+
| SUBSTRING('APACHE+MYSQL+PHP',8) |
+---------------------------------+
| MYSQL+PHP |
+---------------------------------+
1 row in set (0.01 sec)
6.9.15 SUBSTRING_INDEX(str, delim, count)
문자열 str을 delim로 구분해서 배열로 만든후 count 만큼만 보여준다. count가 양수아
면 왼쪽에서 count 수만큼 보여주고 음수이면 오른쪽에서 count수만큼 보여준다.
mysql> SELECT SUBSTRING_INDEX('honey.kwangju.ac.kr', '.', 3);
+------------------------------------------------+
| SUBSTRING_INDEX('honey.kwangju.ac.kr', '.', 3) |
+------------------------------------------------+
| honey.kwangju.ac |
+------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT SUBSTRING_INDEX('honey.kwangju.ac.kr', '.', -3);
+-------------------------------------------------+
| SUBSTRING_INDEX('honey.kwangju.ac.kr', '.', -3) |
+-------------------------------------------------+
| kwangju.ac.kr |
+-------------------------------------------------+
1 row in set (0.00 sec)
6.9.16 LTRIM(str)
문자열 str의 왼쪽 공백을 제거한다.
mysql> SELECT LTRIM(' COMPUTER');
mysql의 함수
MYSQL -23-
+-----------------------+
| LTRIM(' COMPUTER') |
+-----------------------+
| COMPUTER |
+-----------------------+
1 row in set (0.01 sec)
6.9.17 RTRIM(str)
문자열 str의 오른쪽 공백을 제거한다.
mysql> SELECT RTRIM('COMPUTER ');
+------------------------+
| RTRIM('COMPUTER ') |
+------------------------+
| COMPUTER |
+------------------------+
1 row in set (0.00 sec)
6.9.18 TRIM([[BOTH | LEADING | TRAILING ] [remstr] FROM] str)
옵션에 따라 문자열에서 공백을 제거한다. BOTH 앞뒤 공백제거, LEADING 앞쪽 공백
제거, TRAILING 뒤쪽 공백제거
mysql> SELECT TRIM(' SUPERATOM ');
+-------------------------+
| TRIM(' SUPERATOM ') |
+-------------------------+
| SUPERATOM |
+-------------------------+
1 row in set (0.03 sec)
mysql> SELECT TRIM(LEADING 'O' FROM 'OOOABCDEFGOOO');
+----------------------------------------+
| TRIM(LEADING 'O' FROM 'OOOABCDEFGOOO') |
+----------------------------------------+
| ABCDEFGOOO |
+----------------------------------------+
1 row in set (0.01 sec)
mysql> SELECT TRIM(BOTH 'O' FROM 'OOOABCDEFGOOO');
+-------------------------------------+
| TRIM(BOTH 'O' FROM 'OOOABCDEFGOOO') |
+-------------------------------------+
| ABCDEFG |
+-------------------------------------+
1 row in set (0.01 sec)
mysql> SELECT TRIM(TRAILING 'O' FROM 'OOOABCDEFGOOO');
+-----------------------------------------+
| TRIM(TRAILING 'O' FROM 'OOOABCDEFGOOO') |
mysql의 함수
MYSQL -24-
+-----------------------------------------+
| OOOABCDEFG |
+-----------------------------------------+
1 row in set (0.00 sec)
6.9.19 SPACE(N)
N 개의 공백 문자열을 리턴한다.
mysql> SELECT SPACE(10);
+------------+
| SPACE(10) |
+------------+
| |
+------------+
1 row in set (0.00 sec)
6.9.20 REPLACE(str, from_str, to_str)
문자열 str에서 문자열 from_str을 문자열 to_str로 치환한다.
mysql> SELECT REPLACE('SUPER-ATOM','SUPER','super');
+---------------------------------------+
| REPLACE('SUPER-ATOM','SUPER','super') |
+---------------------------------------+
| super-ATOM |
+---------------------------------------+
1 row in set (0.00 sec)
6.9.21 REPEAT(str, count)
문자열 str을 count 수만큼 반복한다.
mysql> SELECT REPEAT('ATOM',5);
+----------------------+
| REPEAT('ATOM',5) |
+----------------------+
| ATOMATOMATOMATOMATOM |
+----------------------+
1 row in set (0.00 sec)
6.9.22 REVERSE(str)
문자열의 순서를 뒤집는다.
mysql> SELECT REVERSE('ATOM');
+-----------------+
| REVERSE('ATOM') |
+-----------------+
| MOTA |
+-----------------+
1 row in set (0.00 sec)
mysql의 함수
MYSQL -25-
6.9.23 INSERT(str, pos, len, newstr)
문자열 str의 특적위치 pos부터 len 길이만큼 새로운 문자열로 바꿔 넣는다.
mysql> SELECT INSERT('HI!ATOM',4,4,'ABCD');
+------------------------------+
| INSERT('HI!ATOM',4,4,'ABCD') |
+------------------------------+
| HI!ABCD |
+------------------------------+
1 row in set (0.00 sec)
6.9.24 ELT(N, str1, str2, str3, ...)
문자열의 목록에서 N번째 문자열을 리턴한다.
mysql> SELECT ELT(4, 'SU','UP','ER','AT','O','M');
+-------------------------------------+
| ELT(4, 'SU','UP','ER','AT','O','M') |
+-------------------------------------+
| AT |
+-------------------------------------+
1 row in set (0.00 sec)
6.9.25 FIELD(str, str1, str2, str3,...)
문자열 str이 뒤따라오는 문자열의 목록에서 몇 번째 위치하는지 아려준다.
mysql> SELECT FIELD('AT', 'SU','UP','ER','AT','O','M');
+------------------------------------------+
| FIELD('AT', 'SU','UP','ER','AT','O','M') |
+------------------------------------------+
| 4 |
+------------------------------------------+
1 row in set (0.00 sec)
6.9.26 LCASE(str), LOWER(str)
문자열을 컴파일시 지정된 문자 셋에 따라 소문자로 변환한다. (디폴트는 ISO-8859-1
Latin1이다)
mysql> SELECT LCASE('SUPER ATOM');
+---------------------+
| LCASE('SUPER ATOM') |
+---------------------+
| super atom |
+---------------------+
1 row in set (0.00 sec)
6.9.27 UCASE(str), UPPER(str)
문자열을 컴파일시 지정된 문자 셋에 따라 대문자로 변환한다. (디폴트는 ISO-8859-1
Latin1이다)
mysql의 함수
MYSQL -26-
mysql> SELECT UCASE('super atom');
+---------------------+
| UCASE('super atom') |
+---------------------+
| SUPER ATOM |
+---------------------+
1 row in set (0.00 sec)
6.10 날짜 및 시간 함수
MYSQL에서는 다른 데이터베이스에서 제공하지 않는 매우 편리한 날짜 및 시간 함수를
많이 제공하고 있다.
6.10.1 DAYOFWEEK(date)
날짜를 한 주의 몇 번째 요일인지를 나타내는 숫자로 리턴한다.
mysql> SELECT DAYOFWEEK('2000-12-19');
+-------------------------+
| DAYOFWEEK('2000-12-19') |
+-------------------------+
| 3 |
+-------------------------+
1 row in set (0.00 sec)
6.10.2 WEEKDAY(date)
날짜를 한 주의 몇 번째 요일인지를 나타내는 숫자로 리턴한다.
mysql> SELECT WEEKDAY('2000-12-19 22:00:12');
+--------------------------------+
| WEEKDAY('2000-12-19 22:00:12') |
+--------------------------------+
| 1 |
+--------------------------------+
1 row in set (0.00 sec)
6.10.3 DAYOFMONTH(date)
그 달의 몇 번째 날인지를 알려준다.
mysql> SELECT DAYOFMONTH('2000-03-07');
+--------------------------+
| DAYOFMONTH('2000-03-07') |
+--------------------------+
| 7 |
+--------------------------+
1 row in set (0.01 sec)
6.10.4 DAYOFYEAR(date)
mysql의 함수
MYSQL -27-
한해의 몇 번째 날인지를 알려준다.
mysql> SELECT DAYOFYEAR('2000-12-19');
+-------------------------+
| DAYOFYEAR('2000-12-19') |
+-------------------------+
| 354 |
+-------------------------+
1 row in set (0.01 sec)
6.10.5 MONTH(date)
해당 날짜가 몇 월인지 알려준다.
mysql> SELECT MONTH('2000-12-19');
+---------------------+
| MONTH('2000-12-19') |
+---------------------+
| 12 |
+---------------------+
1 row in set (0.00 sec)
6.10.6 DAYNAME(date)
해당 날짜의 영어식 요일이름을 리턴한다.
mysql> SELECT DAYNAME('2000-12-19');
+-----------------------+
| DAYNAME('2000-12-19') |
+-----------------------+
| Tuesday |
+-----------------------+
1 row in set (0.01 sec)
6.10.7 MONTHNAME(date)
해당 날짜의 영어식 월 이름을 리턴한다.
mysql> SELECT MONTHNAME('2000-12-19');
+-------------------------+
| MONTHNAME('2000-12-19') |
+-------------------------+
| December |
+-------------------------+
1 row in set (0.00 sec)
6.10.8 QUARTER(date)
분기를 리턴한다. (1~4)
mysql> SELECT QUARTER('2000-12-19');
+-----------------------+
| QUARTER('2000-12-19') |
+-----------------------+
mysql의 함수
MYSQL -28-
| 4 |
+-----------------------+
1 row in set (0.01 sec)
6.10.9 WEEK(date), WEEK(date, first)
인수가 하나일 때는 해당 날짜가 몇 번째 주일인지(0~52)를 리턴하고 2개일 때는 주어
진 인수로 한 주의 시작일을 정해 줄 수 있다. 0이면 일요일을 1이면 월요일을 한 주의
시작일로 계산해 몇 번째 주인가 알려준다.
mysql> SELECT WEEK('2000-12-19');
+--------------------+
| WEEK('2000-12-19') |
+--------------------+
| 51 |
+--------------------+
1 row in set (0.00 sec)
6.10.10 YEAR(date)
년도를 리턴한다. (1000~9999)
mysql> SELECT YEAR('2000-12-19');
+--------------------+
| YEAR('2000-12-19') |
+--------------------+
| 2000 |
+--------------------+
1 row in set (0.01 sec)
6.10.11 HOUR(time)
시간을 리턴한다. (0~23)
mysql> SELECT HOUR('22:12:44');
+------------------+
| HOUR('22:12:44') |
+------------------+
| 22 |
+------------------+
1 row in set (0.00 sec)
6.10.12 MINUTE(time)
분을 리턴한다. (0~59)
mysql> SELECT MINUTE('22:12:44');
+--------------------+
| MINUTE('22:12:44') |
+--------------------+
| 12 |
+--------------------+
1 row in set (0.00 sec)
mysql의 함수
MYSQL -29-
6.10.13 SECOND(time)
초를 리턴한다. (0~59)
mysql> SELECT SECOND('22:12:44');
+--------------------+
| SECOND('22:12:44') |
+--------------------+
| 44 |
+--------------------+
1 row in set (0.00 sec)
6.10.14 PERIOD_ADD(P,N)
YYMM 또는 YYYYMM 형식으로 주어진 달에 N 개월을 더한다. 리턴 값은 YYYYMM
의 형식이다.
mysql> SELECT PERIOD_ADD(200012,2);
+----------------------+
| PERIOD_ADD(200012,2) |
+----------------------+
| 200102 |
+----------------------+
1 row in set (0.01 sec)
6.10.15 PERIOD_DIFF(P1,P2)
YYMM 또는 YYYYMM 형식으로 주어진 두 기간사이의 개월을 구한다.
mysql> SELECT PERIOD_DIFF(200012,199912);
+----------------------------+
| PERIOD_DIFF(200012,199912) |
+----------------------------+
| 12 |
+----------------------------+
1 row in set (0.00 sec)
6.10.16 TO_DAYS(date)
주어진 날짜를 0000년부터의 일수로 바꾼다.
mysql> SELECT TO_DAYS('2000-12-19');
+-----------------------+
| TO_DAYS('2000-12-19') |
+-----------------------+
| 730838 |
+-----------------------+
1 row in set (0.00 sec)
6.10.17 FROM_DAYS(N)
주어진 일수 N으로부터 날짜를 구한다.
mysql의 함수
MYSQL -30-
mysql> SELECT FROM_DAYS(730838);
+-------------------+
| FROM_DAYS(730838) |
+-------------------+
| 2000-12-19 |
+-------------------+
1 row in set (0.05 sec)
6.10.18 DATE_FORMAT(date,format)
format의 정의에 따라 날자 혹은 시간을 출력한다. 매우 빈번히 쓰이는 함수이다.
format에 사용되는 문자는 다음과 같다.
문 자 의 미
%M 월이름 (January...December)
%W 요일명 (Sunday...Saturday)
%D 영어식 접미사를 붙인 일 (1st, 2nd, 3rd, etc...)
%Y 4자리 년도
%y 2자리 년도
%a 짧은 요일명 (Sun...Sat)
%d 일 (00...31)
%e 일 (0...31)
%m 월 (01...12)
%c 월 (1...12)
%b 짦은 월이름 (Jan...Dec)
%j 한해의 몇 번째 요일인가 (001...366)
%H 24시 형식의 시간 (00...23)
%k 24시 형식의 시간 (0...23)
%h 12시 형식의 시간 (01...12)
%I 12시 형식의 시간 (01...12)
%l 시간 (1...12)
%i 분 (00...59)
%r 시분초 12시 형식 (hh:mm:ss [AP]M)
%T 시붙초 24시 형식 (hh:mm:ss)
%S 초 (00...59)
%s 초 (00...59)
%p AM 또는 PM 문자
%w 일주일의 몇 번째 요일인가 (0=Sunday... 6=Saturday)
%U 한해의 몇번째 주인가(0...52). 일요일이 시작일
mysql의 함수
MYSQL -31-
%u 한해의 몇번째 주인가(0...52). 월요일이 시작일
%% ‘%’ 문자를 나타냄
mysql> SELECT DATE_FORMAT('2000-12-19 22:33:00', '%W %M %Y');
+------------------------------------------------+
| DATE_FORMAT('2000-12-19 22:33:00', '%W %M %Y') |
+------------------------------------------------+
| Tuesday December 2000 |
+------------------------------------------------+
1 row in set (0.01 sec)
mysql> SELECT DATE_FORMAT('2000-12-19 22:33:00', '%H %i %s');
+------------------------------------------------+
| DATE_FORMAT('2000-12-19 22:33:00', '%H %i %s') |
+------------------------------------------------+
| 22 33 00 |
+------------------------------------------------+
1 row in set (0.01 sec)
mysql> SELECT DATE_FORMAT('2000-12-19 22:33:00',
'%D %y %a %d %m %b %j');
+------------------------------------------------------------+
| DATE_FORMAT('2000-12-19 22:33:00', '%D %y %a %d %m %b %j') |
+------------------------------------------------------------+
| 19th 00 Tue 19 12 Dec 354 |
+------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT DATE_FORMAT('2000-12-19 22:33:00',
'%H %k %I %r %T %S %w');
+------------------------------------------------------------+
| DATE_FORMAT('2000-12-19 22:33:00', '%H %k %I %r %T %S %w') |
+------------------------------------------------------------+
| 22 22 10 10:33:00 PM 22:33:00 00 2 |
+------------------------------------------------------------+
1 row in set (0.01 sec)
6.10.19 TIME_FORMAT(time,format)
DATE_FROMAT()와 비슷한 역할을 하지만 시, 분, 초만을 나타낼 수 있다는 점이다.
6.10.20 CURDATE(), CURRENT_DATE
오늘 날짜를 ‘YYYY-MM-DD’ 또는 YYYYMMDD 형식으로 리턴한다.
mysql> SELECT CURDATE();
+------------+
| CURDATE() |
+------------+
mysql의 함수
MYSQL -32-
| 2000-12-19 |
+------------+
1 row in set (0.00 sec)
6.10.21 CURTIME(), CURRENT_TIME
‘HH:MM:SS’ 또는 HHMMSS 형식으로 현재시간을 나타낸다.
mysql> SELECT CURTIME();
+-----------+
| CURTIME() |
+-----------+
| 22:36:15 |
+-----------+
1 row in set (0.00 sec)
6.10.22 NOW(), SYSDATE(), CURRENT_TIMESTAMP
오늘 날짜와 현재 시간을 ‘YYYY-MM-DD HH:MM:SS 또는 YYYYMMDDHHMMSS 형
식으로 리턴한다.
mysql> SELECT NOW();
+---------------------+
| NOW() |
+---------------------+
| 2000-12-19 22:36:30 |
+---------------------+
1 row in set (0.00 sec)
6.10.23 UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date)
인수가 없이 사용될 경우 현재 시간의 유닉스 타임스탬프를 리턴하고 만일 날짜형식의
date가 인수로 주어진 경우에는 주어진 날짜의 유닉스 타임스탬프를 리턴한다.
mysql> SELECT UNIX_TIMESTAMP();
+------------------+
| UNIX_TIMESTAMP() |
+------------------+
| 977233008 |
+------------------+
1 row in set (0.00 sec)
mysql> SELECT UNIX_TIMESTAMP('2000-12-19 22:41:00');
+---------------------------------------+
| UNIX_TIMESTAMP('2000-12-19 22:41:00') |
+---------------------------------------+
| 977233260 |
+---------------------------------------+
1 row in set (0.00 sec)
6.10.24 FROM_UNIXTIME(unix_timestamp)
mysql의 함수
MYSQL -33-
주어진 유닉스 타임스탬프 값으로부터 ‘YYYY-MM-DD HH:MM:SS’ 또는
YYYYMMDDHHMMSS 형식의 날짜를 리턴한다.
mysql> SELECT FROM_UNIXTIME(977233260);
+--------------------------+
| FROM_UNIXTIME(977233260) |
+--------------------------+
| 2000-12-19 22:41:00 |
+--------------------------+
1 row in set (0.00 sec)
6.10.25 FROM_UNIXTIME(unix_timestamp, format)
주어진 유닉스 타임스탬프 값을 주어진 날짜 형식에 맞게 바꾸서 보여준다. 여기서 사
용되는 형식문자는 DATE_FROMAT() 함수에서 사용된 것과 같다.
mysql> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(),
'%Y %D %M %h:%i:%s %x');
+---------------------------------------------------------+
| FROM_UNIXTIME(UNIX_TIMESTAMP(), '%Y %D %M %h:%i:%s %x') |
+---------------------------------------------------------+
| 2000 19th December 10:39:47 x |
+---------------------------------------------------------+
1 row in set (0.00 sec)
6.10.26 SEC_TO_TIME(seconds)
주어진 초를 ‘HH:MM:SS’ 도는 HHMMSS 형식의 시간단위로 바꿔준다.
mysql> SELECT SEC_TO_TIME(1225);
+-------------------+
| SEC_TO_TIME(1225) |
+-------------------+
| 00:20:25 |
+-------------------+
1 row in set (0.03 sec)
mysql> SELECT SEC_TO_TIME(2378);
+-------------------+
| SEC_TO_TIME(2378) |
+-------------------+
| 00:39:38 |
+-------------------+
1 row in set (0.00 sec)
6.10.27 TIME_TO_SEC(time)
주어진 시간을 초 단위로 바꿔준다.
mysql> SELECT TIME_TO_SEC('22:45:00');
+-------------------------+
| TIME_TO_SEC('22:45:00') |
mysql의 함수
MYSQL -34-
+-------------------------+
| 81900 |
+-------------------------+
1 row in set (0.01 sec)
6.11 기타 함수
6.11.1 DATABASES()
현재 사용중인 데이터베이스 이름을 리턴한다.
mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| atomDB |
+------------+
1 row in set (0.00 sec)
6.11.2 USER(), SYSTEM_USER(), SESSION_USER()
현재 접속중인 MYSQL 사용자 이름을 리턴한다.
mysql> SELECT USER();
+----------------+
| USER() |
+----------------+
| atom@localhost |
+----------------+
1 row in set (0.01 sec)
6.11.3 PASSWORD(str)
일반 문자열을 암호화한다. 이 함수는 MYSQL 서버가 사용자 권한을 설정하는 테이블
인 user 테이블에 사용자의 암호를 입력할 때 사용된다.
PASSWORD() 함수를 통한 암호화는 단방향적이다. 즉 한번 PASSWORD() 함수를 통
해 암호화된 문자열을 다시 해독하는 함수는 존재하지 않는다. 따라서 주어진 사용자의
암호를 암호화 한 후 기존의 암호화된 문자열과 비교하는 방법을 통해 비교가 이루어지
다.
mysql> SELECT PASSWORD('ATOM');
+------------------+
| PASSWORD('ATOM') |
+------------------+
| 37a2353b58d088dc |
+------------------+
1 row in set (0.00 sec)
mysql의 함수
MYSQL -35-
6.11.4 ENCRYPT(str[,salt])
이 함수는 유닉스 시스템의 crypt() 시스템 함수를 이용해 주어진 문자열을 암호화한다.
암호화에 사용되는 salt가 주어질 경우 반드시 2문자가 되어야 한다.
만일 시스템에 crypt() 함수가 없다면 항상 NULL 값이 리턴될 것이다. 또한
ENCRYPT() 함수는 시스템에 따라 주어진 문자열의 앞부분 8자 까지만 암호화한다.
mysql> SELECT ENCRYPT('ATOM');
+-----------------+
| ENCRYPT('ATOM') |
+-----------------+
| M8pluDhVaCNtk |
+-----------------+
1 row in set (0.07 sec)
6.11.5 ENCODE(str,pass_str)
주어진 pass_str 문자열을 이용해 문자열 str을 암호화한다. 해독하기 위해서
DECODE() 함수를 사용하면 된다. 결과 값이 바이너리 문자열로 리턴 되므로 이 값을
저장하기 위해서는 BLOB 컬럼 타입을 이용해야 한다.
mysql> SELECT ENCODE('ATOM','atom');
+-----------------------+
| ENCODE('ATOM','atom') |
+-----------------------+
| I쁪? |
+-----------------------+
1 row in set (0.05 sec)
6.11.6 DECODE(crypt_str, pass_str)
ENCODE() 함수를 통해 리턴된 암호화 된 문자열 crypt_str을 해독한다. 이때 pass_str
는 반드시 이전에 암호화 할 때에 사용된 문자열이어야 한다.
mysql> SELECT DECODE('I쁪?,'atom');
+-----------------------+
| DECODE('I쁪?,'atom') |
+-----------------------+
| ATOM |
+-----------------------+
1 row in set (0.00 sec)
6.11.7 LAST_INSERT_ID([expr])
AUTO_INCREMENT 속석으로 정의된 컬럼에 마지막으로 입력된 값을 리턴한다.
mysql> SELECT LAST_INSERT_ID();
+------------------+
| last_insert_id() |
+------------------+
| 0 |
+------------------+
mysql의 함수
MYSQL -36-
1 row in set (0.00 sec)
6.11.8 FORMAT(X,D)
숫자 X를 ‘#,###,###,##’와 같은 형식으로 표현한다.
D는 소수점 이하 자릿수를 나타낸다. 만일 D가 0일 경우는 소수점 이하부분을 나타나
지 않는다.
mysql> SELECT FORMAT(1234.1234, 3);
+----------------------+
| FORMAT(1234.1234, 3) |
+----------------------+
| 1,234.123 |
+----------------------+
1 row in set (0.00 sec)
6.11.9 VERSION()
MYSQL 서버의 버전을 표시한다.
mysql> SELECT VERSION();
+--------------+
| VERSION() |
+--------------+
| 3.23.4-alpha |
+--------------+
1 row in set (0.01 sec)
6.11.10 BENCHMARK(count, expr)
주어진 SQL 문이나 연산을 count에 정의된 수만큼 반복해서 실행한다. 서버가 얼마나
빠르게 주어진 구문을 처리하는지 알 수 있다. 결과 값은 항상 0이다.
mysql> SELECT BENCHMARK(100000, ENCODE('HELLO','ATOM'));
+-------------------------------------------+
| BENCHMARK(100000, ENCODE('HELLO','ATOM')) |
+-------------------------------------------+
| 0 |
+-------------------------------------------+
1 row in set (1.25 sec)
댓글
  • No Nickname
    No Comment
  • 권한이 없습니다.
    {{m_row.m_nick}}
    -
제목 작성자 날짜
공대여자
공대여자
mins01
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
mins
mins
mins
mins
mins