Dlaczego ""(podkreślenie) pasuje do " - " (myślnik)?
Muszę poszukać instrukcji PDF używając tego zapytania:
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)
Dlaczego widzę tę z myślnikami, kiedy podaję nazwę taz_manual%.pdf
?
2 answers
Ponieważ podkreślenie _
jest znakiem wieloznacznym, takim jak procent %
, z tym, że szuka tylko jednego znaku.
SQL pattern matching umożliwia użycie"_", aby dopasować dowolny pojedynczy znak i"%", aby dopasować dowolną liczbę znaków (w tym zero znaków).
(z sekcji 3.3.4.7. Pattern Matching w dokumentacji MySQL.)
Jeśli chcesz użyć podkreślenia w like
jako dosłownego, musisz od niego uciec:
select * from a where name like '%taz\_manual%.pdf%';
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-23 02:35:24
Miałem podobny problem ze spacją i myślnikami podczas dopasowywania łańcuchów z dokładnym dopasowaniem:
SELECT id FROM location WHERE name = 'IND - HQ';
Powyższe zapytanie nie zwróciło żadnych rekordów w MySQL. Musiałem uciec od spacji i myślników i użyć LIKE
zamiast dokładnego dopasowania z równymi ( = ) w następujący sposób:
SELECT id FROM location WHERE name LIKE 'IND_\-_HQ';
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-05 20:47:31