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

MySQL에서 REPLACE() 함수를 사용해 &를 앰퍼샌드(&)로 바꾸는 방법

MySQL에서 REPLACE() 함수로 &를 앰퍼샌드(&)로 바꾸는 방법

웹 폼이나 HTML 처리 과정을 거친 데이터를 보면 값 중간중간에 “&”처럼 HTML 엔티티 형태로 저장된 경우가 있습니다. 이런 값을 실제 앰퍼샌드 문자인 “&”로 바꾸고 싶다면 MySQL의 REPLACE() 함수를 사용하면 됩니다. REPLACE() 함수는 문자열 안에서 지정한 부분 문자열을 찾아 다른 문자열로 교체해 주는 함수로, UPDATE 문과 함께 사용하면 저장된 데이터를 손쉽게 일괄 치환할 수 있습니다.

먼저 예제에 사용할 테이블을 생성해 보겠습니다.

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

이어서 INSERT 명령으로 샘플 데이터를 몇 개 추가해 보겠습니다. 두 번째 레코드에는 “&”라는 문자열이 그대로 저장되도록 입력했습니다.

mysql> insert into DemoTable(Value) values('@amp');
Query OK, 1 row affected (0.33 sec)
mysql> insert into DemoTable(Value) values('&');
Query OK, 1 row affected (1.09 sec)
mysql> insert into DemoTable(Value) values('#amp');
Query OK, 1 row affected (0.28 sec)

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

mysql> select *from DemoTable;

현재 저장된 데이터는 다음과 같습니다.

+----+-------+
| Id | Value |
+----+-------+
| 1  | @amp  |
| 2  | &     |
| 3  | #amp  |
+----+-------+
3 rows in set (0.00 sec)

이제 “&” 문자열을 앰퍼샌드(“&”)로 대체하는 UPDATE 쿼리를 실행해 보겠습니다.

mysql> update DemoTable set Value=replace(Value,'&','&');
Query OK, 1 row affected (0.56 sec)
Rows matched: 3 Changed: 1 Warnings: 0

쿼리 실행 후 테이블의 레코드를 다시 한번 확인해 보겠습니다.

mysql> select *from DemoTable;

결과를 보면 두 번째 레코드의 값이 “&”에서 “&”로 정상적으로 변경된 것을 확인할 수 있습니다.

+----+-------+
| Id | Value |
+----+-------+
| 1  | @amp  |
| 2  | &     |
| 3  | #amp  |
+----+-------+
3 rows in set (0.00 sec)

정리

REPLACE(컬럼명, '찾을 문자열', '바꿀 문자열') 형식으로 REPLACE() 함수를 UPDATE 문과 조합하면 컬럼에 저장된 특정 문자열을 한 번에 치환할 수 있습니다. HTML 엔티티 정리나 특수문자 변환 같은 데이터 정제 작업에서 매우 유용하게 활용할 수 있으니 실무에서 참고해 보시기 바랍니다.