반응형
“_”(밑줄)이“-”(하이픈)과 일치하는 이유는 무엇입니까?
이 쿼리를 사용하여 PDF 설명서를 찾아야합니다.
root@localhost:test> select * from a where name like '%taz_manual%.pdf%';
+--------------------+------------------+-------------+
| name | description | size |
+--------------------+------------------+-------------+
| taz-manual-1.1.pdf | Manual v1.0 TA-Z | 31351902 |
| taz-manual-0.2.pdf | Manual v1.0 T1-A | 3578278 |
| taz_manual-2.0.pdf | Manual v2.0 GA-X | 542578278 |
etc........
+--------------------+------------------+-------------+
132 row in set (0.00 sec)
이름을 지정할 때 대시가있는 것을 왜 볼 수 taz_manual%.pdf
있습니까?
밑줄 _
은 percent와 같은 와일드 카드 이므로 %
하나의 문자 만 찾습니다.
SQL 패턴 일치를 사용하면 "_"를 사용하여 단일 문자를 일치시키고 "%"를 사용하여 임의의 문자 수 (0자를 포함)와 일치시킬 수 있습니다.
(섹션 3.3.4.7. MySQL 문서의 패턴 일치 섹션 참조 )
밑줄을 like
리터럴로 사용하려면 밑줄 을 이스케이프 처리해야합니다.
select * from a where name like '%taz\_manual%.pdf%';
문자열과 정확히 일치하는 동안 공백과 하이픈과 비슷한 문제가 발생했습니다.
SELECT id FROM location WHERE name = 'IND - HQ';
위의 쿼리는 MySQL의 레코드를 반환하지 않았습니다. 공백과 하이픈을 피하고 LIKE
다음과 같이 등호 (=)와 정확히 일치 하는 대신 사용해야 했습니다.
SELECT id FROM location WHERE name LIKE 'IND_\-_HQ';
참고 URL : https://stackoverflow.com/questions/8236818/why-does-underscore-match-hyphen
반응형
'program tip' 카테고리의 다른 글
“……”토큰의 의미는 무엇입니까? (0) | 2020.08.02 |
---|---|
Android의 키오스크 모드 (0) | 2020.08.02 |
패치를 적용 할 때 충돌을 해결할 수있는 방법이 있습니까? (0) | 2020.07.30 |
상수 포인터 대 상수에 대한 포인터 (0) | 2020.07.30 |
Visual Studio 2005/2012 : 첫 번째 중괄호를 같은 줄에 유지하는 방법? (0) | 2020.07.30 |