为什么"_"(下划线)匹配" - "(连字符)?

E.G*_*.G. 110 mysql wildcard

我必须使用此查询查找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)
Run Code Online (Sandbox Code Playgroud)

当我指定名称时,为什么我会看到带破折号的那个taz_manual%.pdf

Boo*_*eus 231

因为下划线_是百分比的通配符%,除了它只查找一个字符.

SQL模式匹配使您可以使用"_"匹配任何单个字符,使用"%"匹配任意数量的字符(包括零个字符).

(来自MySQL文档中的第3.3.4.7节"模式匹配 ".)

如果要将下划线like用作文字,则必须将其转义:

select * from a where name like '%taz\_manual%.pdf%';
Run Code Online (Sandbox Code Playgroud)