> 데이터 베이스 > MySQL 튜토리얼 > MySQL의 WHERE 절과 LIKE 절 사이에서 백슬래시 이스케이프가 다른 이유는 무엇입니까?

MySQL의 WHERE 절과 LIKE 절 사이에서 백슬래시 이스케이프가 다른 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2025-01-06 21:55:45
원래의
1021명이 탐색했습니다.

Why Does Escaping Backslashes Differ Between MySQL's WHERE and LIKE Clauses?

MySQL WHERE 및 LIKE 절의 이스케이프 문자

MySQL에서는 WHERE 절에서 백슬래시()와 같은 특수 문자를 검색할 때, 추가 이스케이프가 필요하지 않습니다. 그러나 LIKE 절에는 이중 백슬래시()가 필요합니다. 이는 MySQL이 LIKE 문에서 이스케이프 문자로 를 기본적으로 사용하기 때문입니다.

WHERE 및 LIKE에서 이스케이프 문자가 작동하는 이유와 방법 이해

WHERE 절에서 MySQL은 추가 처리 없이 지정된 값을 열 값과 직접 비교합니다. 따라서 단일 백슬래시()이면 열의 백슬래시 문자와 일치하는 데 충분합니다.

LIKE 절에서 MySQL은 먼저 지정된 패턴에서 모든 백슬래시를 제거합니다. 그런 다음 패턴 일치 프로세스 중에 나머지 백슬래시를 제거합니다. 이 이중 스트리핑 프로세스에는 백슬래시 문자를 이스케이프하고 LIKE 절에서 일치시키려면 이중 백슬래시()가 필요합니다.

제공된 SQL 쿼리는 다음을 보여줍니다. 그만큼 차이:

(SELECT * FROM `titles` WHERE title = 'test\')
UNION ALL
(SELECT * FROM `titles` WHERE title LIKE 'test\\')
로그인 후 복사

출력:

| ID | TITLE |
--------------
| 1 | test\ |
| 1 | test\ |
로그인 후 복사

열 값의 백슬래시와 일치하려면 LIKE 절에 이중 백슬래시()가 필요합니다.

이스케이프 문자 변경

원하는 경우 이스케이프 문자를 변경할 수 있습니다. LIKE 문에서 ESCAPE 키워드 뒤에 원하는 문자를 지정하여 사용됩니다.

SELECT * FROM `titles` WHERE title LIKE 'test\' ESCAPE '|'
로그인 후 복사

이 경우 파이프(|)가 이스케이프 문자로 사용되어 단일 백슬래시()가 일치하도록 허용합니다. LIKE 절.

위 내용은 MySQL의 WHERE 절과 LIKE 절 사이에서 백슬래시 이스케이프가 다른 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿