Mysql
 sql >> Base de données >  >> RDS >> Mysql

Mysql Search traite les périodes comme des espaces

Au lieu de faire le remplacement sur le champ, comme d'autres réponses le suggèrent, vous pouvez faire le remplacer sur le terme de recherche . De cette façon, MySQL pourrait toujours utiliser un index sur field1 . Supposons que les points soient toujours là à la place des espaces

SELECT field1, field2 FROM table WHERE field1 = REPLACE('user input', ' ', '.')

Si vous voulez visualiser sans points, vous pouvez faire le remplacement inverse dans le SELECT partie aussi :

SELECT REPLACE(field1, '.', ' '), field2 FROM table 
WHERE field1 = REPLACE('user input', ' ', '.')

Ou vous pouvez même envisager de mettre à jour votre base de données, au lieu de vous battre avec :

UPDATE table SET field1 = REPLACE(field1, '.', ' ')