DA Study/TIL

[TIL] 이스케이핑(ESCAPING)의 개념 및 활용 예시 #SQL #MySQL

harrym8n 2025. 3. 10. 18:55

ESCAPING이란?

  • 원래 특정 의미('임의의 길이를 가진 문자열')를 나타내던 문자(ex:%)를 그 특정 의미가 아니라, 일반적인 문자처럼 취급하는 행위
  • 어떤 문자가 그것에 부여된 특정한 의미, 기능으로 해석되는 게 아니라 그냥 단순한 문자 하나로 해석되도록 하는 것

ESCAPING

  • 기호: 따옴표('), 퍼센트(%) 등 기호를 ESCAPING하려면 역슬래시(\) 사용
  • 대소문자: 소문자만 지정되도록 하려면 BINARY를 사용

예시

1) 기호 - 백슬래시(\) 활용

SELECT
    id, name, email, age
FROM 
    member
WHERE
    address LIKE '%%%'


-- 결과: 모든 데이터 출력

 

[문제 발생]

  • %이 포함된 데이터만 필터링해서 조회하고 싶으나 모든 데이터가 출력됨

[원인]

  • %가 정규표현식으로 인식되어 모든 데이터가 포함됨
    • 임의의 길이를 가진 문자열을 나타내는 것으로 해석되어버림

[해결]

SELECT
    id, name, email, age
FROM 
    member
WHERE
    address LIKE '%\%%'


-- 결과: 문자 %가 포함된 데이터 출력

 


2) 대소문자 - BINARY 활용

SELECT
    *
FROM 
    test
WHERE
    sentence LIKE '%g%'

-- 결과: sentence 데이터중 대소문자 모두 포함되어 조회됨(G,g)

 

[문제 발생]

  • 소문자g가 포함된 데이터만 필터링해서 조회하고 싶으나 대문자 G가 포함된 데이터까지 출력됨

[원인]

  • Table collation 설정이 대소문자를 구분하지 않도록 설정(case-insensitive) 되어 있음
    • MySQL 설정을 바꾸지 않고 조회할 수 있어야 팀원간 혼선이 발생하지 않음

[해결]

SELECT
    *
FROM 
    test
WHERE
    sentence LIKE BINARY '%g%'


-- 결과: sentence 데이터중 소문자만 포함되어 조회됨(g)