Mysql 특수문자 처리 - mysql teugsumunja cheoli

SQL 에서 '%'같은 특수 문자는 검색이 불가능하다.
예를 들어 WHERE 조건 = '%bb' 를 하게 되면 %bb 와 일치하는 조건을 찾고 싶은거였지만, bb가 마지막에 오는 문자를 검색하게 된다.
이처럼 특수문자가 포함된 문자열은 우리가 의도한바와 다르게 작동할때가 있는데, 이럴때 사용하는 것이 ESCAPE이다.

아래와 같이 사용한다.

SELECT PRODUCT_NAME 
FROM PROUDCT
WHERE PRODUCT_NAME LIKE '%#_%' ESCAPE '#';

ESCAPE 문자를 지정한 후에, 특수 문자앞에 ESCAPE문자를 넣어준다.
이렇게 되면 ESCAPE문자 뒤에 있는 문자를 일반 문자로 인식하게되어, _(언더바)가 들어간 상품명을 검색하게 된다.
ESCAPE 문자는 어떤 문자로든 지정할 수 있다.

php mysql 혹은 mariaDB  프로그래밍을 처음 할때 한번쯤 경험하는 것이 바로 싱글쿼트 single quote 에러일 것이다.

쿼리문은 제대로 쓴거 같은데 왜 에러가 나지...

하고 에러문을 보니

title=adidas Women's Cloudfoam QT Racer w Running Shoe, Clear Onix/White/Clear Onix, 8 M US

Error: INSERT INTO godo_item (srl,cateCd,goodsNm,create_at) VALUES ('B01HSIH68K','001','adidas Women's Cloudfoam QT Racer w Running Shoe, Clear Onix/White/Clear Onix, 8 M US',now())

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 's Cloudfoam QT Racer w Running Shoe, Clear Onix/White/Clear Onix, 8 M US',now())' at line 2title=Zhuanglin Women's Quick Drying Aqua Water Shoes

해석을 해보니 's Cloudfoam 근처에서 에러가 난다고 써있다.

원인은 바로 Women's Cloudfoam 이였다.

특히 외국은 Men's Women's 처럼 ' 를 많이 쓴다.

흠.. 저 처리를 해줘야 되는구나..

mybatis 같은 경우는 변수가 통째로 문자열로 취급하여 문제 없으나 php는 변수에 대입하는 방식이라 ' 가 걸린다.

그래서 ' 처리를 해줘야 하는데 escape 하면 된다.

즉, \' 이런식으로..

php에서는 이런걸 해주는 addslash 함수가 있다.

그래서
$title=addslash($title);

했더니 insert가 오류 안나고 잘 되었다.

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

PHP 싱글쿼테이션(') 및 특수문자 처리하기

MySQL에서 싱글 쿼테이션은 문자열이라는 것을 의미한다. 따라서 이 싱글 쿼테이션이 문자열이라는 것을 밝이는 의미가 아니라 그냥 캐릭터로써 읽히고자 한다면 \' 이런식으로 사용하게 된다. 

하지만, 문자열 내에 포함된 싱글 쿼테이션을 처리하려면 어떻게 해야 할까? 

서론을 봐도 무슨 말인지 모르겠다면 예를 들어 보자 

$s = "I'm your father"

$query = "SELECT * FROM 테이블명 WHERE 필드명 = '$s" ; 

일때 에러가 발생한다. 

그 이유는 WHERE 문의 싱글 쿼테이션이 $s 에 포함된 싱글쿼테이션과 함쳐져서 3개가 되기 때문이다. 

이것을 해결하기 위한 방법은 다음과 같다. 

  addslashes() 

특정 특수 문자 앞에 자동으로 역슬레쉬 (\)를 붙여준다. 

$s = "I'm your father" 

$s = addslashes($s) ; 

출력 결과 :I\'m tour father 

  stripslashes()

addslashes() 함수를 통해 표기된 '\' 문자를 원래대로 돌려준다. 

$s = stripslashes($s) 

출력결과 : I'm your father 

알쓸전컴(알아두면 쓸모있는 전자 컴퓨터)

C# tip

C# sql 특수 문자 처리

백곳 2019. 1. 3. 17:32

C# sql 특수 문자 처리

아래가 sql 에서 특수 문자 처리를 위한 컨버터 함수 입니다.

자주 사용하게 될것 같아 글을 남깁니다.


publicstring AddSlashes(stringInputTxt)

{

// List of characters handled:

// \000 null

// \010 backspace

// \011 horizontal tab

// \012 new line

// \015 carriage return

// \032 substitute

// \042 double quote

// \047 single quote

// \134 backslash

// \140 grave accent

stringResult=InputTxt;

try

{

Result =System.Text.RegularExpressions.Regex.Replace(InputTxt, @"[\000\010\011\012\015\032\042\047\134\140]", "\\$0");

}

catch (Exception Ex)

{

// handle any exception here

Console.WriteLine(Ex.Message);

}

returnResult;

}

 publicstatic stringStripSlashes(stringInputTxt)

{

// List of characters handled:

// \000 null

// \010 backspace

// \011 horizontal tab

// \012 new line

// \015 carriage return

// \032 substitute

// \042 double quote

// \047 single quote

// \134 backslash

// \140 grave accent

stringResult=InputTxt;

try

{

Result =System.Text.RegularExpressions.Regex.Replace(InputTxt, @"(\\)([\000\010\011\012\015\032\042\047\134\140])", "$2");

}

catch (ExceptionEx)

{

// handle any exception here

Console.WriteLine(Ex.Message);

}

returnResult;

}