programing

데이터베이스 MySQL에서 LIKE 연산자를 사용하여 HTML 검색

randomtip 2022. 10. 22. 09:38
반응형

데이터베이스 MySQL에서 LIKE 연산자를 사용하여 HTML 검색

데이터베이스에 html을 저장했습니다.다음은 예를 제시하겠습니다.

ID | Data
1  | <a href=\"link\" class=\"someclass\" id=\"id_10923074\"><h3 class=\"class1 class2\"><\/h3><br \/><div class=\"clearfix\"><\/div><\/a>
2  | <a href=\"lin2\" class=\"someclass\" id=\"id_10923075\"><h3 class=\"class1 class2\">some text<\/h3><br \/><div class=\"clearfix\"><\/div><\/a>

이제 h3(행 1)에 텍스트가 포함되지 않은 비활성 레코드를 쿼리합니다.

나는 많은 질문을 시도했지만, 일부는 다음과 같이 말했다.

SELECT `mytable`.* FROM `mytable` WHERE (Data LIKE '%<h3 class=\"class1 class2\"><\/h3>%')

SELECT `mytable`.* FROM `mytable` WHERE (Data LIKE '%h3 class="class1 class2"></h3%')

SELECT `mytable`.* FROM `mytable` WHERE (Data LIKE '"%class1 class2%"')

SELECT `mytable`.* FROM `mytable` WHERE (Data LIKE '%<h3 class=\"class1 class2\">%')

내가 뭘 놓쳤지?나는 여기서 많은 질문을 확인했지만 해결책을 찾을 수 없었다.

감사해요.

코드가 예상대로 작동하고 있습니다.다음 내용을 참조하십시오.

SELECT * FROM `mytable` WHERE (Data LIKE '%<h3 class=\"class1 class2\"><\/h3>%')

당신의 문제는 아마 당신의 견적에 있을 것입니다.백슬래시를 회피하고 있는 것을 확인합니다(\)와 따옴표("PHP 코드에 올바르게 입력해 주세요.

솔루션 검색:

따라서 백슬래시만 이중으로 이스케이프하는 것이 요령입니다. 현 이스케이프는 단일 이스케이프만 필요합니다.

예를들면

The single quote ' only needs escaping once LIKE '%\'%'
But to query backslash \ you need to double escape to LIKE '%\\\\%'
If you wanted to query backslash+singlequote \' then LIKE '%\\\\\'%' (with 5 backslashes)

설명 출처 발췌:

MySQL은 문자열에서 C 이스케이프 구문(예를 들어 "\n"을 사용하여 줄 바꿈 문자를 나타냄)을 사용하므로 LIKE 문자열에서 사용하는 "\"을 두 배로 해야 합니다.예를 들어 "\n"을 검색하려면 "\n"으로 지정합니다."\"을 검색하려면 "\"로 지정합니다. 이는 패턴 일치 시 파서에 의해 백슬래시가 한 번 삭제되고 단일 백슬래시가 일치하기 때문입니다.

올바른 쿼리:

SELECT * FROM `mytable` WHERE (Data LIKE '%<h3 class=\\\\"class1 class2\\\\"><\\\\/h3>%')

행을 찾으려면Data적어도 1개는 가지고 있다<h3>(다음과 같은 속성 유무에 관계없이)class=)이전에 텍스트가 없었습니다.</h3>:

WHERE Data REGEXP '<h3[^>]*></h3>'

언급URL : https://stackoverflow.com/questions/48446807/search-html-using-like-operator-in-database-mysql

반응형