MySQL에서 아포스트로피 제거하기
SQL에서 아포스트로피(')는 문자열을 감싸는 구분자로 사용되기 때문에, 데이터 안에 포함된 작은따옴표는 쿼리 오류나 예상치 못한 동작의 원인이 될 수 있습니다. 이러한 아포스트로피를 제거하려면 해당 문자를 빈 문자열로 대체하면 되는데, MySQL에서는 REPLACE() 함수를 사용하면 간단하게 처리할 수 있습니다.
기본 문법
SET anyVariableName = REPLACE(yourVariableName , '\'', '');
위 문법에서 첫 번째 인수는 대상이 되는 변수 또는 문자열, 두 번째 인수는 제거하고 싶은 아포스트로피('\''), 세 번째 인수는 대체할 값(빈 문자열 '')입니다. SQL에서 작은따옴표 자체를 표현하려면 백슬래시(\)로 이스케이프 처리해야 한다는 점에 유의하세요.
저장 프로시저 예제
위 문법을 실제로 이해하기 위해, 입력받은 문자열에서 아포스트로피를 제거하는 저장 프로시저를 만들어 보겠습니다.
mysql> DELIMITER //
mysql> CREATE PROCEDURE remove_Apostrophe(IN Value VARCHAR(200))
BEGIN
SET Value = REPLACE(Value , '\'', '');
SELECT CONCAT("AFTER REMOVING APOSTROPHE THE STRING IS= ", Value);
END
//
Query OK, 0 rows affected (0.15 sec)
mysql> DELIMITER ;
저장 프로시저 생성 시에는 DELIMITER //로 구분자를 임시 변경한 뒤, 프로시저 본문 작성이 끝나면 DELIMITER ;로 원래대로 되돌리는 것이 일반적인 패턴입니다.
저장 프로시저 호출하기
생성된 저장 프로시저는 CALL 명령으로 호출합니다. 아래 예제에서는 아포스트로피가 포함된 문자열을 인수로 전달합니다.
mysql> CALL remove_Apostrophe("Introduction to My'SQL");실행 결과는 다음과 같습니다.
+----------------------------------------------------------------+
| CONCAT("AFTER REMOVING APOSTROPHE THE STRING IS= ", Value) |
+----------------------------------------------------------------+
| AFTER REMOVING APOSTROPHE THE STRING IS= Introduction to MySQL |
+----------------------------------------------------------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected, 1 warning (0.01 sec)
출력 결과를 보면 My'SQL에서 아포스트로피가 성공적으로 제거되어 Introduction to MySQL이라는 깔끔한 문자열이 반환된 것을 확인할 수 있습니다. 이처럼 REPLACE() 함수를 활용하면 저장 프로시저 내부에서도 아포스트로피를 손쉽게 정제할 수 있으며, 사용자 입력 데이터를 처리할 때 발생할 수 있는 따옴표 관련 오류를 사전에 방지하는 데 유용합니다.