Je dois chercher un manuel PDF en utilisant cette requête:
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)
Pourquoi est-ce que je vois celui avec des tirets lorsque je spécifie le nom à être taz_manual%.pdf
?
LIKE
déclaration. Lors du remplacement de tous_
avec-
:UPDATE sys_file set identifier = REPLACE(identifier, '_', '-') WHERE identifier LIKE '%\_%';
. Remarquez la fuite à l'intérieurLIKE
et aucune fuite à l'intérieurREPLACE
. (Je trouve étrange cependant que vous ne soyez pas dans un contexte de modèle à l'intérieur de replace ...)J'ai eu un problème similaire avec l'espace et les traits d'union lors de la correspondance des chaînes avec une correspondance exacte:
La requête ci-dessus n'a renvoyé aucun enregistrement dans MySQL. J'ai dû échapper aux espaces et aux traits d'union et utiliser
LIKE
au lieu de la correspondance exacte avec égal (=) comme suit:la source