Posted
Filed under Mysql

[원문]  :  http://tagbox.tistory.com/48

select * from table where name >= '가' and name < '나'
select * from table where name >= '하'


///////초성으로 검색하기/////////
 if($find == 'ㄱ'){
  $where = "and (uname RLIKE '^(ㄱ|ㄲ)' OR ( uname >= '가' AND uname < '나' )) order by uname";
 }else if($find == 'ㄴ'){
  $where = "and (uname RLIKE '^ㄴ' OR ( uname >= '나' AND uname < '다' )) order by uname";
 }else if($find == 'ㄷ'){
  $where = "and (uname RLIKE '^(ㄷ|ㄸ)' OR ( uname >= '다' AND uname < '라' )) order by uname";
 }else if($find == 'ㄹ'){
  $where = "and (uname RLIKE '^ㄹ' OR ( uname >= '라' AND uname < '마' )) order by uname";
 }else if($find == 'ㅁ'){
  $where = "and (uname RLIKE '^ㅁ' OR ( uname >= '마' AND uname < '바' )) order by uname";
 }else if($find == 'ㅂ'){
  $where = "and (uname RLIKE '^ㅂ' OR ( uname >= '바' AND uname < '사' )) order by uname";
 }else if($find == 'ㅅ'){
  $where = "and (uname RLIKE '^(ㅅ|ㅆ)' OR ( uname >= '사' AND uname < '아' )) order by uname";
 }else if($find == 'ㅇ'){
  $where = "and (uname RLIKE '^ㅇ' OR ( uname >= '아' AND uname < '자' )) order by uname";
 }else if($find == 'ㅈ'){
  $where = "and (uname RLIKE '^(ㅈ|ㅉ)' OR ( uname >= '자' AND uname < '차' )) order by uname";
 }else if($find == 'ㅊ'){
  $where = "and (uname RLIKE '^ㅊ' OR ( uname >= '차' AND uname < '카' )) order by uname";
 }else if($find == 'ㅋ'){
  $where = "and (uname RLIKE '^ㅋ' OR ( uname >= '카' AND uname < '타' )) order by uname";
 }else if($find == 'ㅌ'){
  $where = "and (uname RLIKE '^ㅌ' OR ( uname >= '타' AND uname < '파' )) order by uname";
 }else if($find == 'ㅍ'){
  $where = "and (uname RLIKE '^ㅍ' OR ( uname >= '파' AND uname < '하' )) order by uname";
 }else if($find == 'ㅎ'){
  $where = "and (uname RLIKE '^ㅎ' OR ( uname >= '하')) order by uname";
 }else{
  $where = "order by uname";
 }

 $qry="select * from table_name where $where";
 $res=mysql_query($qry);

2010/12/27 12:28 2010/12/27 12:28
Posted
Filed under Mysql

[원문] : http://cafe.naver.com/fmsource2.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=143
Table '' is marked as crashed and should be repaired

라고 뜰시 해결하는 방법을 알려드리겠습니다.

만약 characters라는 테이블에서 저런에러가 뜰경우

repair table characters;

라고 스크립트에 입력후 excute를 눌러주시면

복구가 되는사람도 있고 않되는분도 있습니다.

더자세히 말하자면

DB 즉, mysql 흰바탕에 오른쪽버튼 누른후

Add New script TAB

을 누르셔서 repair table characters; 라고 입력하시면 되겠습니다.

그리고 위에 번개모양 Excute를 눌러주세요 ^_^

감사합니다.

 

만약 해결 않될시.

여러번 시도해서 복구가 안될때에는  myisamchk로 복구한다.(DB 서버를 끄고 할것)

mysql 4.0 버젼
root]# /usr/local/mysql/bin/myisamchk <옵션> -u<User> -p /usr/local/mysql/var/<DBname>/<Tablename.MYI> or <*.MYI>
password:<password>


mysql 3.0 버젼
root]# /usr/local/mysql/bin/isamchk <옵션> -u<User> -p /usr/local/mysql/var/<DBname>/<Tablename.ISM> or <*.ISM>
password:<password>


위 명령 실행시 해당되는 ISM or MYI 파일의 에러를 체크하여 복구한다
<옵션>  설명
-o : 안전하게 복구
-r : 복구
-f : 강제복구


사용예)
root]# /usr/local/mysql/bin/myisamchk -o -uwebin_pe_kr -p /usr/local/mysql/var/webin_pe_kr/board.MYI
password:*********

2010/11/21 21:39 2010/11/21 21:39
Posted
Filed under Mysql
  1. mysqldump -u root -p db_name table_name > dbname_table.sql
2010/11/19 05:48 2010/11/19 05:48
Posted
Filed under Mysql

출처 : http://www.cyworld.com/eunmunlee/3986707

 

 

 

예전에 latin1로 저장된  db를 그냥 옵기게 되면 한글이 깨져서 보이지 않게 됩니다.

그럴때 사용하기 위한 방법 입니다.

1. 백업하기
   mysqldump -u{username} -p{password} {dbname} --default-character-set latin1 > {dump}.sql
   여기서 제일 중요한 것이 --default-character-set latin1 입니다.
   이것이 없으면 온전하게 백업이 되지 않으니 여러가지로 어렵습니다.

2. 문자셋 변환하기
    (문제가 되는 것이 보통 이 과정에서 메모장이나 에딕터를 이용하게 되면 깨져서 복원을 할때 에러가 발생합니다.)  
    utf8로 변환 할때
    iconv -c -f cp949 -t utf-8  원본파일명  > 변환될 파일명.sql
    euckr 이라면 변환 할때
    iconv -c -f cp949 -t euckr 원본파일명  > 변환될 파일명.sql

3. 복원될 테이블 구조 변환하기
   (문자셋 변환이 정상적으로 되었으니 이제 에딕터나 메모장을 사용해도 됩니다.)
    NAMES latin1;  =>  SET NAMES utf8; 으로 변경합니다.
    CHARSET=latin1;  => DEFAULT CHARSET=utf8; 으로 변경합니다.
    귀찬으면 latin1 =>  utf8; 변경해도 됩니다.
    새이름으로 저장하시고,

5, 디비 생성
    이때 utf8_general_ci 로 생성 합니다.

6, mysql 을 다시 시작 합니다.

7, 디비 복원
mysql --default-character-set utf8 -u{username} -p{password} {utf8-dbname} < {dump}.sql

   위 같이 하니 문제가 없군요

2010/11/19 05:20 2010/11/19 05:20
Posted
Filed under Mysql
 REPLACE(content,'b>','strong>'); 

mysql을 이용해서 문자열 변경시 사용 하면 된다.
2010/10/07 17:25 2010/10/07 17:25
Posted
Filed under Mysql

★ Query

IF(조건,참일때실행,거짓일때실행) : 조건문 (oracle : decode(col명,비교값,취할값,비교값,취할

                                                 값,....기본값)와 비슷)
 :col값이 비교값이면 취할값으로 대체.

SELECT * INTO OUTFILE "경로 또는 파일명" [FIELDS TERMINATED BY ','] FROM 테이블명;

                              : 외부파일로 백업하기

IFNULL(값,치환문자) : 값이 null 이면 치환문자로 치환함 (oracle: nvl과 같음)

NULLIF(값1,값2) : 값1과 값2를 서로 비교해서 같으면 NULL을 다르면 값1을 반환

                         (값1은 NULL이 아니어야 한다)

AVG(컬럼명) : GROUP BY 로 묶고 평균을 구한다

SUBSTRING_INDEX('값','구분문자',숫자) : 값을 구분자로 나누어서 숫자만큼의 나누어진 값을 반

                     환 (ex: SELECT SUBSTRING_INDEX('a,b,c,d,e',',',2) => a,b)

DISTINCT(필드) : 중복되는 값 제거

CASE (변수or필드) WHEN 비교값 THEN 결과 END
   a컬럼의 값이 '1'일 경우 'A'를 반환하도록 하려면...
      SELECT  
      CASE a 
      WHEN '1' THEN 'A' 
      END 
      FROM ....
   여기에...a컬럼의 값이 '2'일 경우에는 'B'를 반환하도록 추가 하려면...
      SELECT 
      CASE a 
      WHEN '1' THEN 'A'  
      WHEN '2' THEN 'B' 
      END 
      FROM ....
   a컬럼의 값이 1,2 가 아닌 그 외의 값을 갖으면 'C'를 반환하도록 하자면;;;
      SELECT 
      CASE a 
      WHEN '1' THEN 'A'  
      WHEN '2' THEN 'B' 
      ELSE 'C'
      END 
      FROM ....

STRCMP(값1, 값2) : 값1과 값2가 같으면 0, 값1이 작으면 -1, 값1이 크면 1을 반환

REGEXP '정규식' : 정규식사용

DATE_ADD('1998-01-02', INTERVAL 31 DAY); : 날짜 더하기 (ADDDATE와 같음)

       -> '1998-02-02'
ADDTIME('01:00:00.999999', '02:00:00.999998'); : 시간 더하기
        -> '03:00:01.999997'






★ Function, Procedure

REPEAT(반복될 문자열, 반복할 숫자);

IF (비교) THEN 실행코드

      ELSEIF (비교) THEN 실행코드

      ELSE  실행코드

      END IF;

[출처] mysql 함수 정리|작성자 마루아라

2010/09/15 14:08 2010/09/15 14:08
Posted
Filed under Mysql

[원문]http://blog.naearu.com/2982861
12.3.
스트링 함수

= "urn:schemas-microsoft-com:office:office" /> 

  12.3.1. 스트링 비교 함수

 

스트링-값 함수는 그 결과 값의 길이가 max_allowed_packet 시스템 변수의 값 보다 클 경우에는, NULL을 리턴한다. Section 7.5.2, “서버 파라미터 튜닝하기를 참조할 것.


스트링 포지션(position)에서 연산을 하는 함수의 경우, 첫 번째 포지션은 숫자 1된다 .

  • ASCII(str )

스트링 str 왼쪽 문자의 숫자 값을 리턴한다. str 이 빈 스트링(empty string) 경우에는 0 을 리턴한다. NULL if str NULL일 경우에는 NULL 을 리턴한다. ASCII() 0 에서 255 사이의 숫자 값을 갖는 문자에 대해서 연산을 한다.

mysql> SELECT ASCII('2');

        -> 50

mysql> SELECT ASCII(2);

        -> 50

mysql> SELECT ASCII('dx');

        -> 100

ORD() 함수를 함께 참조할 것.

  • BIN(N)

N 바이너리 값에 대한 스트링 표현식을 리턴하는데, 여기에서N (BIGINT) 숫자이다. 이것은 CONV(N,10,2)과 동일하다. N NULL일 경우에는 NULL을 리턴한다.

mysql> SELECT BIN(12);

        -> '1100'

  • BIT_LENGTH(str)

스트링 str 의 길이를 비트 단위로 리턴한다.

mysql> SELECT BIT_LENGTH('text');

        -> 32

  • CHAR(N,... [USING charset_name])

CHAR() 각각의 인수 N 을 정수 형태로 해석을 하고 이러한 정수의 코드 값에 의해 주어지는 문자로 구성된 스트링을 리턴한다. NULL 값은 무시(skipped)된다.

mysql> SELECT CHAR(77,121,83,81,'76');

        -> 'MySQL'

mysql> SELECT CHAR(77,77.3,'77.3');

        -> 'MMM'

MySQL 5.0.15 이후 버전에서는,  255 보다 CHAR() 인수는 여러 개의 결과 바이트로 변환된다. 예를 들면, CHAR(256) CHAR(1,0)와 같고, 그리고 CHAR(256*256) CHAR(1,0,0) 과 같다:

mysql> SELECT HEX(CHAR(1,0)), HEX(CHAR(256));

+----------------+----------------+

| HEX(CHAR(1,0)) | HEX(CHAR(256)) |

+----------------+----------------+

| 0100           | 0100           |

+----------------+----------------+

mysql> SELECT HEX(CHAR(1,0,0)), HEX(CHAR(256*256));

+------------------+--------------------+

| HEX(CHAR(1,0,0)) | HEX(CHAR(256*256)) |

+------------------+--------------------+

| 010000           | 010000             |

+------------------+--------------------+

디폴트로는, CHAR()는 바이너리 스트링을 리턴한다. 주어진 문자 셋에 있는 스트링을 만들기 위해서는, USING 구문을 옵션으로 사용한다:

mysql> SELECT CHARSET(CHAR(0x65)), CHARSET(CHAR(0x65 USING utf8));

+---------------------+--------------------------------+

| CHARSET(CHAR(0x65)) | CHARSET(CHAR(0x65 USING utf8)) |

+---------------------+--------------------------------+

| binary              | utf8                          |

+---------------------+--------------------------------+

만일 USING을 사용하였는데도 그 결과 스트링이 주어진 문자 셋에 대해서 유효하지 않게 되면, 경고문이 나오게 된다. 또한, 만일 스트릭트(strict) SQL 모드를 활성화 한다면, CHAR() 의 결과 값은 NULL된다 .

MySQL 5.0.15 이전 버전에서는, CHAR()연결 문자 셋에 있는 스트링을 리턴하며 USING 구문은 사용할 수 없게 된다. 또한, 각각의 인수는 모듈로(modulo) 256으로 해석이 되기 때문에, CHAR(256) CHAR(256*256) 는 둘 다 CHAR(0)과 동일한 것이 된다.

스트링 str의 길이를 리턴한다. 다중 바이트 문자는 단일 문자로 계산(count) 된다. , 5개의 2 바이트 문자를 갖는 스트링에 대해서, LENGTH() 10을 리턴 하지만, CHAR_LENGTH()5를 리턴 한다 .

  • CHARACTER_LENGTH(str )

CHARACTER_LENGTH() CHAR_LENGTH()과 동일하다.

  • CONCAT(str1,str2,...)

인수를 연결한 결과로 나오는 스트링을 리턴한다. 한 개 또는 그 이상의 인수를 가질 수 있다. 만일 모든 인수가 바이너리 스트링이 아니라면, 그 결과는 바이너리가 아닌 스트링이 된다. 만일 인수에 바이너리 스트링이 포함되어 있다면, 그 결과는 바이너리 스트링이 된다. 숫자 인수는 동일한 바이너리 스트링 형태로 변환된다 ; 만일 이렇게 변환되는 것을 원하지 않을 경우에는, 아래의 예문과 같이 명확하게 타입 캐스트(type cast)를 사용하면 된다 :

SELECT CONCAT(CAST(int_col AS CHAR), char_col );

CONCAT() 모든 인수가 NULL이 아니면 NULL 을 리턴한다.

mysql> SELECT CONCAT('My', 'S', 'QL');

        -> 'MySQL'

mysql> SELECT CONCAT('My', NULL, 'QL');

        -> NULL

mysql> SELECT CONCAT(14.3);

        -> '14.3'

  • CONCAT_WS(separator,str1,str2,...)

CONCAT_WS() 구분자를 사용하는 연결(Concatenate With Separator)을 나타내는 것이며 CONCAT()의 특수 형태이다. 첫 번째 인수는 나머지 인수들에 대한 구분자(separator)가 된다. 구분자는 연결되는 스트링 사이에 추가된다. 구분자는 스트링이 될 수 있다. 만일 구분자가 NULL 이면, 그 결과는 NULL이다.

mysql> SELECT CONCAT_WS(',','First name','Second name','Last Name');

        -> 'First name,Second name,Last Name'

mysql> SELECT CONCAT_WS(',','First name',NULL,'Last Name');

        -> 'First name,Last Name'

CONCAT_WS()는 빈 스트링(empty string)을 무시(skip)하지 않는다. 하지만, 구분자 인수 다음에 나오는 모든 NULL 값은 무시를 한다.

  • CONV(N,from_base, to_base)

서로 다른 문자 베이스(base)간의 숫자를 변환한다. from_base 에서 베이스 to_base로 변환된 숫자 N의 스트링 표현식을 리턴한다. 인수 중의 하나가 NULL이면 NULL 을 리턴한다.인수 N 은 정수로 해석되지만, 정수 또는 스트링으로 지정될 수도 있다. 최소 베이스는 2 이고 최대 베이스는 36이다 . 만일 to_base 가 음수라면, N 은 부호화된 숫자로 간주된다. 그렇지 않을 경우에는, N 은 부호 없는 숫자로 취급된다. CONV() 64-비트 정밀도를 갖는다.

mysql> SELECT CONV('a',16,2);

        -> '1010'

mysql> SELECT CONV('6E',18,8);

        -> '172'

mysql> SELECT CONV(-17,10,-18);

        -> '-H'

mysql> SELECT CONV(10+'10'+'10'+0xa,10,10);

        -> '40'

  • ELT(N,str1, str2,str3,...)

만일N = 1이면, str1, N = 2이면, str2 을 리턴하는 방식. N 1 보다 작거나 또는인수의 숫자보다 많을 경우에는 NULL을 리턴한다. ELT()FIELD()의 보수(complement)이다 .

mysql> SELECT ELT(1, 'ej', 'Heja', 'hej', 'foo');

        -> 'ej'

mysql> SELECT ELT(4, 'ej', 'Heja', 'hej', 'foo');

        -> 'foo'

bits에 있는 모든 비트 셋(bit set) 대해서는, on 스트링을, 그리고 모든 리셋 비트에 대해서는, off 스트링을 리턴한다 . bits 에 있는 비트는 오른쪽에서 왼쪽으로 검사된다 (낮은 순서에서 높은 순서 비트로). 스트링은 왼쪽에서 오른쪽으로 결과에 추가되는데, separator 스트링으로 구분이 된다 (디폴트 스트링은 콤마 문자,’). 검사가 되는 비트의 숫자는 number_of_bits로 주어진다 (디폴트는 64).

mysql> SELECT EXPORT_SET(5,'Y','N',',',4);

        -> 'Y,N,Y,N'

mysql> SELECT EXPORT_SET(6,'1','0',',',10);

        -> '0,1,1,0,0,0,0,0,0,0'

  • FIELD(str,str1,str2,str3 ,...)

str1, str2, str3, ... 리스트에 있는 str 의 인덱스(포지션) 리턴한다. str찾을 수 없는 경우에는 0 을 리턴 한다.

만일 FIELD()에 대한 모든 인수가 스트링이라면, 모든 인수는 스트링으로 비교된다 . 만일 모든 인수가 숫자일 경우에는 숫자로 비교가 된다. 그렇지 않은 경우라면, 인수들은 두 번 (double) 비교가 된다.

만일 str NULL이라면, 리턴 값은 0 이 되는데, 그 이유는 NULL 은 어떤 값과도 등식 비교가 되지 않기 때문이다 . FIELD()ELT()의 보수(complement)이다.

mysql> SELECT FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo');

        -> 2

mysql> SELECT FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo');

        -> 0

만일 스트링 str N 서브 스트링으로 구성된 스트링 리스트 strlist 에 있는 것이라면, 1의 범위에 있는 값을 N 리턴한다 . 하나의 스트링 리스트는 콤마 문자로 구분된 서브 스트링들로 구성된 스트링이다. 만일 첫 번째 인수가 상수 스트링이고 두 번째 인수가 타입 SET의 컬럼이라면, FIND_IN_SET() 함수는 비트 산술식을 사용하기 위해서 최적화가 된다. 만일 str strlist 없거나 또는 strlist가 빈 스트링이라면 , 0을 리턴한다. NULL if만일 인수 중의 하나가 NULL이라면, NULL을 리턴한다. 만일 첫 번째 인수가 콤마 문자를 가지고 있다면, 이 함수는 제대로 동작을 하지 않는다.

mysql> SELECT FIND_IN_SET('b','a,b,c,d');

        -> 2

  • FORMAT(X,D )

숫자 X 포맷을 '#,###,###.##' 형태로 만들고, D의 소수점 뒷자리에서 절사(round) 를 하고, 그 결과를 스트링으로 리턴한다. 만일 D 0 이면, 결과는 소수점 또는 분수 부분을 갖지 않는다.

mysql> SELECT FORMAT(12332.123456, 4);

        -> '12,332.1235'

mysql> SELECT FORMAT(12332.1,4);

        -> '12,332.1000'

mysql> SELECT FORMAT(12332.2,0);

        -> '12,332'

  • HEX(N_or_S)

만일N_or_S 이 숫자라면, N에 대한 16진수 값에 해당하는 스트링 표현을 리턴하는데 , 여기에서 N (BIGINT) 숫자가 된다. 이것은 CONV(N,10,16)과 동일하다.

만일 N_or_S 이 스트링 이라면 , N_or_S 에 대한 16진수 스트링 표현식을 리턴하는데, N_or_S 에 있는 각각의 문자는 2개의 16진수 숫자로 변환된다.

mysql> SELECT HEX(255);

        -> 'FF'

mysql> SELECT 0x616263;

        -> 'abc'

mysql> SELECT HEX('abc');

        -> 616263

  • INSERT(str,pos ,len,newstr)

str 포지션 pos 에서 시작하는 서브 스트링을 len 문자 길이만큼 스트링 newstr 변경시켜서 str 리턴한다. 만일 pos 가 스트링의 길이 안에 있지 않다면, 원래의 스트링을 리턴한다. 만일 len 의 범위가 스트링의 나머지 길이 범위 내에 있지 않다면, 포지션 pos  이후의 나머지 스트링을 대체 시킨다. 만일 어떤 인수가 NULL 이면 , NULL을 리턴한다.

mysql> SELECT INSERT('Quadratic', 3, 4, 'What');

        -> 'QuWhattic'

mysql> SELECT INSERT('Quadratic', -1, 4, 'What');

        -> 'Quadratic'

mysql> SELECT INSERT('Quadratic', 3, 100, 'What');

        -> 'QuWhat'

이 함수는 다중 바이트에서도 동작을 한다.

  • INSTR(str,substr)

str 에서 서브 스트링 substr 가 처음으로 나오는 포지션을 리턴한다. 이것은 LOCATE()에서 두 개의 인수를 사용하는 것과 동일한 결과를 리턴 하지만, 인수들의 순서는 반대가 된다.

mysql> SELECT INSTR('foobarbar', 'bar');

        -> 4

mysql> SELECT INSTR('xbar', 'foobar');

        -> 0

이 함수는 다중 바이트에서도 동작을 하며, 최소 하나의 인수가 바이너리 스트링일 경우에만 문자 크기를 구분한다.

  • LCASE(str)

LCASE()LOWER()와 동의어 이다.

  • LEFT(str,len)

스트링 str에서 가장 왼쪽으로부터 len 개의 문자를 리턴한다 .

mysql> SELECT LEFT('foobarbar', 5);

        -> 'fooba'

  • LENGTH(str)

str의 길이를 바이트 단위로 리턴한다. 다중 바이트 문자는 다중 바이트로 계산 (count) 된다. 이것은 2 바이트 문자가 5 개 있는 스트링의 경우, LENGTH() 10을 리턴하는 반면에, CHAR_LENGTH()5 리턴한다는 것을 의미한다.

mysql> SELECT LENGTH('text');

        -> 4

  • LOAD_FILE(file_name)

파일을 읽은 다음에 파일의 내용물을 스트링으로 리턴한다. 이 함수를 사용하기 위해서는, 파일은 반드시 서버 호스트에 있어야 하며, 그 파일에 대한 경로 이름을 전체적으로 지정해야 하며, 그리고 FILE 권한을 가져야 한다. 그 파일은 모든 사용자에게 읽힐 수 있어야 하며 파일의 크기는 max_allowed_packet 바이트 보다는 작아야 한다.

만일 파일이 존재하지 않거나 또는 위의 조건 중에 하나로 인해 파일을 읽을 수가 없게 된다면, 함수는 NULL을 리턴한다.

MySQL 5.0.19 이후 버전에서는, character_set_filesystem 시스템 변수가 리터럴 스트링으로 주어진 파일 이름에 대한 해석을 제어한다.

mysql> UPDATE t

            SET blob_col=LOAD_FILE('/tmp/picture')

            WHERE id=1;

  • LOCATE(substr,str), LOCATE(substr,str,pos)

첫 번째 신텍스는 str 에서 서브 스트링 substr 가 처음으로 나오는 포지션을 리턴한다 . 두 번째 신텍스는, 포지션 pos에서 시작을 해서, str 에서 서브 스트링 substr 가 처음으로 나오는 포지션을 리턴한다. substr str에 존재하지 않을 경우에는, 0을 리턴한다.

mysql> SELECT LOCATE('bar', 'foobarbar');

        -> 4

mysql> SELECT LOCATE('xbar', 'foobar');

        -> 0

mysql> SELECT LOCATE('bar', 'foobarbar', 5);

        -> 7

이 함수는 다중 바이트에서도 동작을 하며, 인수 중에서 최소 하나라도 바이너리 스트링일 경우에만 문자 크기를 구분한다.

  • LOWER(str)

현재 (current) 문자 셋 매핑에 따라서 스트링 str 의 모든 문자를 소문자로 변경 시켜서 리턴한다 . 디폴트는 latin1 (cp1252 West European).

mysql> SELECT LOWER('QUADRATICALLY');

        -> 'quadratically'

함수는 다중 바이트에서도 동작을 한다.

  • LPAD(str,len,padstr)

왼쪽에 스트링 padstr 를 집어 넣어서 문자의 길이를 len 만큼 되도록 한 스트링 str 을 리턴한다. 만일 str len 보다 길다면, 리턴 값은 len 길이 만큼 줄어 든다 .

mysql> SELECT LPAD('hi',4,'??');

        -> '??hi'

mysql> SELECT LPAD('hi',1,'??');

        -> 'h'

  • LTRIM(str)

스트링 앞에 있는 스페이스를 없앤 스트링 str 리턴한다 .

mysql> SELECT LTRIM('  barbar');

        -> 'barbar'

이 함수는 다중 바이트에서도 동작을 한다.

  • MAKE_SET(bits,str1 ,str2,...)

bits 셋에 대응되는 비트를 가지고 있는 스트링으로 구성된 셋 값 (콤마 문자로 구분된 서브 스트링을 가지고 있는 스트링)을 리턴한다. str1은 비트 0대응되고 , str2 1에 대응되며, 계속 이런 식으로 대응이 된다. str1, str2, ... 에 있는 NULL 값은 결과에 따라 나오지 않는다.

mysql> SELECT MAKE_SET(1,'a','b','c');

        -> 'a'

mysql> SELECT MAKE_SET(1 | 4,'hello','nice','world');

        -> 'hello,world'

mysql> SELECT MAKE_SET(1 | 4,'hello','nice',NULL,'world');

        -> 'hello'

mysql> SELECT MAKE_SET(0,'a','b','c');

        -> ''

  • MID(str, pos,len)

MID(str,pos,len) SUBSTRING(str,pos,len) 동의어 이다.

  • OCT(N)

N 8진 값에 해당하는 스트링 표현식을 리턴하는데, 여기에서 N (BIGINT) 번호가 된다. 이것은 CONV( N,10,8)과 같다. 만일 N NULL이면, NULL을 리턴한다.

mysql> SELECT OCT(12);

        -> '14'

OCTET_LENGTH()LENGTH()과 동의어 이다.

  • ORD(str)

만일 If the leftmost character of the string스트링 str 의 가장 왼쪽의 문자가 다중 바이트 문자라면, 그 문자에 대한 코드를 리턴하는데, 그 값은 아래의 공식을 사용해서 얻어낸다:

  (1st byte code)

+ (2nd byte code × 256)

+ (3rd byte code × 2562) ...

만일 가장 왼쪽의 문자가 다중 바이트 문자가 아니라면, ORD()ASCII() 함수와 같은 값을 리턴한다.

mysql> SELECT ORD('2');

        -> 50

  • POSITION(substr IN str)

POSITION(substr IN str )LOCATE(substr,str)과 동의어 이다.

 

  • QUOTE(str)

SQL 명령문에서 이스케이프된 데이터 값으로 사용할 수 있는 결과를 만들기 위해 스트링에 인용 부호를 준다. 만일 인수가 NULL이면 , 리턴 값은 인용 부호가 없는 단어 “NULL” 이 나오게 된다.

mysql> SELECT QUOTE('Don\'t!');

        -> 'Don\'t!'

mysql> SELECT QUOTE(NULL);

        -> NULL

  • REPEAT(str,count )

count 횟수 만큼 반복된 스트링 str 으로 구성된 스트링을 리턴한다. 만일 count 1 보다 작을 경우에는 , 빈 스트링을 리턴한다. str 또는 count NULL이라면, NULL을 리턴한다

mysql> SELECT REPEAT('MySQL', 3);

        -> 'MySQLMySQLMySQL'

  • REPLACE(str, from_str,to_str)

스트링 from_str 가 나온 부분을 모두 스트링 to_str로 대체해서 스트링 str 을 리턴한다.               REPLACE()from_str에 대한 검색을 할 때 문자 크기를 구분해서 매칭을 실행한다.

mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');

        -> 'WwWwWw.mysql.com'

이 함수는 다중 바이트에서도 동작을 한다 .

  • REVERSE(str )

문자의 순서를 역순으로 헤서 스트링 str 을 리턴한다.

mysql> SELECT REVERSE('abc');

        -> 'cba'

이 함수는 다중 바이트에서도 동작을 한다.

  • RIGHT(str, len)

str에서 오른쪽으로부터 len 문자 만큼을 리턴한다.

mysql> SELECT RIGHT('foobarbar', 4);

        -> 'rbar'

이 함수는 다중 바이트에서도 동작을 한다.

  • RPAD(str,len,padstr)

스트링 padstr 를 오른쪽에 집어 넣어서 len 문자 길이 만큼 str을 만들어서 리턴한다. 만일 str len 보다 길다면, 리턴 값은 len 문자 만큼 짧아진다.

mysql> SELECT RPAD('hi',5,'?');

        -> 'hi???'

mysql> SELECT RPAD('hi',1,'?');

        -> 'h'

이 함수는 다중 바이트에서도 동작을 한다.

  • RTRIM(str)

스트링 str에서 뒤에 붙어 있는 스페이스 문자를 없앤 스트링을 리턴한다.

mysql> SELECT RTRIM('barbar   ');

        -> 'barbar'

함수는 다중 바이트에서도 동작을 한다.

  • SOUNDEX(str)

Str의 사운덱스(soundex) 스트링을 리턴한다. 거의 같은 소리가 나는 두 개의 스트링은 고유의 사운덱스 스트링을 가져야 한다. 표준 사운덱스 스트링은 4 문자 길이가 되지만, SOUNDEX() 함수는 임의의 길이 스트링을 리턴한다. 여러분은 표준 사운덱스 스트링을 얻기 위해서 결과 값에 SUBSTRING()을 사용할 수가 있다. str에 있는 문자 중에 알파벳이 아닌 것들은 모두 무시가 된다 . A-Z 범위를 벗어나는 모든 국제 문자들은 모두 모음으로 취급된다 .

mysql> SELECT SOUNDEX('Hello');

        -> 'H400'

mysql> SELECT SOUNDEX('Quadratically');

        -> 'Q36324'

  • expr1 SOUNDS LIKE expr2

이것은 SOUNDEX(expr1) = SOUNDEX(expr2) 과 같다.

  • SPACE(N)

N 개의 스페이스 문자로 구성된 스트링을 리턴한다.

mysql> SELECT SPACE(6);

        -> '      '

  • SUBSTRING(str ,pos), SUBSTRING(str FROM pos), SUBSTRING(str,pos ,len), SUBSTRING(str FROM pos FOR len)

len 인수가 없는 형태는 포지션 pos에서 시작을 하는 서브 스트링을 스트링 str 에서 리턴 한다. len 인수를 가지고 있는 형태는 포지션 pos에서 시작을 해서 서브 스트링 len 문자를 리턴한다. FROM을 사용하는 형태는 표준 SQL 신텍스이다. pos의 값으로 음수를 사용하는 것도 가능하다. 음수를 사용할 경우에는, 서브 스트링의 시작점이 스트링의 처음이 아닌 끝에서부터 pos 문자 위치가 된다 . 음수 값은 이 함수의 어떤 형태에서도 사용이 가능하다.

mysql> SELECT SUBSTRING('Quadratically',5);

        -> 'ratically'

mysql> SELECT SUBSTRING('foobarbar' FROM 4);

        -> 'barbar'

mysql> SELECT SUBSTRING('Quadratically',5,6);

        -> 'ratica'       

mysql> SELECT SUBSTRING('Sakila', -3);

        -> 'ila'       

mysql> SELECT SUBSTRING('Sakila', -5, 3);

        -> 'aki'

mysql> SELECT SUBSTRING('Sakila' FROM -4 FOR 2);

        -> 'ki'

이 함수는 다중 바이트에서도 동작을 한다.

만일 len 1 보다 작으면, 그 결과는 빈 스트링이 된다.

SUBSTR()SUBSTRING() 동일하다.

구분자 (delimiter) delimcount 만큼 나오기 전에 스트링 str 에서 서브 스트링을 리턴한다. 만일 count 양수 (positive)라면, 마지막 구분자의 왼쪽에 있는 모든 것들이 리턴된다 (왼쪽부터 계산이 됨). 만일 count 가 음수일 경우에는, 마지막 구분자의 오른쪽에 있는 모든 것들이 리턴된다 (오른쪽부터 계산됨). SUBSTRING_INDEX()delim에 대한 검색을 할 때 문자의 크기를 구분한다 .

mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);

        -> 'www.mysql'

mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);

        -> 'mysql.com'

이 함수는 다중 바이트를 지원한다.

  • TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str) , TRIM([remstr FROM] str)

스트링 str 를 모든 remstr 접두사 (prefixes) 또는 접미사를 제거한 상태로 리턴한다. 만일 BOTH, LEADING, 또는 TRAILING 중의 어느 것도 주어지지 않는다면, BOTH가 주어진 것으로 간주된다 . remstr 는 선택 사항이며, 만일 지정되지 않을 경우에는, 스페이스가 제거된다.

mysql> SELECT TRIM('  bar   ');

        -> 'bar'

mysql> SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx');

        -> 'barxxx'

mysql> SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx');

        -> 'bar'

mysql> SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz');

        -> 'barx'

이 함수는 다중 바이트를 지원한다.

  • UCASE(str)

UCASE() UPPER()와 동의어이다.

  • UNHEX(str)

HEX(str)와는 반대 연산을 실행한다. , 이 함수는 인수에 있는 각각의 16진수를 숫자로 해석을 하고 그 숫자에 대응하는 문자로 변환을 시킨다. 그 결과로 나오는 문자들은 바이너리 스트링으로 리턴된다 .

mysql> SELECT UNHEX('4D7953514C');

        -> 'MySQL'

mysql> SELECT 0x4D7953514C;

        -> 'MySQL'

mysql> SELECT UNHEX(HEX('string'));

        -> 'string'

mysql> SELECT HEX(UNHEX('1267'));

        -> '1267'

  • UPPER( str)

Returns 스트링 str 를 현재의 (current) 문자 셋 매핑에 따라서 대문자로 변환이 된 모든 문자와 함께 리턴한다. 디폴트는 latin1 (cp1252 West European).

mysql> SELECT UPPER('Hej');

        -> 'HEJ'

이 함수는 다중 바이트를 지원한다.

2009/09/14 12:00 2009/09/14 12:00
Posted
Filed under Mysql

MySQL  4.0 이하이 password 함수는 4.1 이상부터는 old_password() 로 변경되었으며
MySQL 4.1 이상에서 password 함수를 기존의 4.0 이하와 같은 방식으로 사용코자 한다면,
my.ini 에서 [mysqld] 섹션 아래에 old_password = 1 을 추가 후, MySQL 을 재시작 해야 한다.

mysql 4.1 대 이후에서는 암호 해쉬 알고리즘이 변경이 되었습니다.
이전의 알고리즘에 의한 암호화는 old_password() 함수로 제공이 됩니다.

이 때문에, 이전 버전에 맞게 설계된 프로그램들은 인증 실패가 발생합니다. 해결책으로는 프로그램(Client)의 라이브러리를 변경하거나, 사용자 비밀번호(mysql.user)를 old_password() 로 변경해주는 방법이 있고, 아니면 mysqld 를 --old-passwords 옵션으로 구동하는 방법이 있습니다.

[원문]
http://dev.mysql.com/doc/refman/5.1/en/old-client.html

2009/07/28 15:24 2009/07/28 15:24
Posted
Filed under Mysql

mysql 4.x 버전에서 mysql 5.x 버전으로  db를 이전 할 경우
charset문제로 한글이 깨지는 경우가 발생

mysql4 버전에서 phpmyadmin을 이용하여 db backup 함..
백업시 완전한 insert  체크 박스에 체크를 한 후
데이터 베이스 타입을 mysql 4로 선택 한 후 파일로 저장 한다.

저장된 파일을 Edit 플러스로 열어서
파일 -> 새로운 이름으로 저장을 클릭 한다.

새로운 이름으로 저장할 때 인코딩 타입을 ANSI로 선택 하고 저장 한다.

ANSI 포멧으로 저장된 파일을 mysql5 에 mysql 명령어를 이용하여 콘솔상에서 넣어 주면
됨.

2009/07/21 17:59 2009/07/21 17:59
Posted
Filed under Mysql
1. --single-transaction 옵션 추가
mysqldump -u 유저 -p --single-transaction db_name > db.sql

출처 http://moondoin.tistory.com/


2.  --lock-all-tables 옵션 추가
mysqldump -u 유저 -p --lock-all-tables db_name > db.sql

출처 http://softm.net/files/database.html?id=mysql_tip&notice_id=&s=&tot=&search=&search_cond=&no=21&print_no=21&exec=view&npop=&sort=hit&desc=desc&search_cat_no=2


2008/12/14 13:08 2008/12/14 13:08
2009/07/17 20:36 2009/07/17 20:36