Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL replace() 함수로 아포스트로피(') 대체·제거하는 방법

MySQL에서 아포스트로피 대체하기

MySQL에서 문자열 데이터에 포함된 아포스트로피(')를 다른 문자로 바꾸거나 완전히 제거하려면 replace() 함수를 사용하면 됩니다. 기본 문법은 다음과 같습니다.

update yourTableName set yourColumnName=replace(yourColumnName,'\'','');

replace() 함수는 세 개의 인자를 받습니다. 첫 번째는 대상 컬럼, 두 번째는 찾을 문자열, 세 번째는 교체할 문자열입니다. 위 예제에서는 아포스트로피를 빈 문자열('')로 교체하여 사실상 제거하는 방식입니다.

예제 테이블 생성

동작을 확인하기 위해 먼저 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
    (
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Sentence varchar(100)
    );
Query OK, 0 rows affected (0.17 sec)

샘플 데이터 삽입

insert 명령으로 몇 개의 레코드를 추가합니다. 이때 문장 안에 아포스트로피가 포함되도록 역슬래시(\)로 이스케이프 처리합니다.

mysql> insert into DemoTable(Sentence) values('Chris\'s Father');
Query OK, 1 row affected (0.07 sec)

mysql> insert into DemoTable(Sentence) values('Larry\'s Mother');
Query OK, 1 row affected (0.06 sec)

select 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

위 쿼리는 다음과 같은 결과를 출력합니다.

+----+----------------+
| Id | Sentence       |
+----+----------------+
| 1  | Chris's Father |
| 2  | Larry's Mother |
+----+----------------+
2 rows in set (0.00 sec)

아포스트로피 대체 쿼리 실행

다음은 replace() 함수를 활용해 아포스트로피를 제거하는 실제 쿼리입니다.

mysql> update DemoTable set Sentence=replace(Sentence,'\'','');
Query OK, 2 rows affected (0.07 sec)
Rows matched: 2 Changed: 2 Warnings: 0

아포스트로피가 정상적으로 대체되었는지 확인하기 위해 테이블을 다시 조회해 보겠습니다.

mysql> select *from DemoTable;

실행 결과는 다음과 같습니다.

+----+---------------+
| Id | Sentence      |
+----+---------------+
| 1  | Chriss Father |
| 2  | Larrys Mother |
+----+---------------+
2 rows in set (0.00 sec)

참고 사항

아포스트로피를 제거하는 대신 다른 문자로 바꾸고 싶다면 replace()의 세 번째 인자에 원하는 값을 넣으면 됩니다. 예를 들어 replace(Sentence,'\'','"')처럼 작성하면 아포스트로피가 큰따옴표로 대체됩니다. 또한 SQL 인젝션 방지를 위해 애플리케이션 단에서는 prepared statement를 사용하는 것이 안전하다는 점도 함께 기억해 두시기 바랍니다.