2010-10-19 6 views
0

Quelqu'un at-il un exemple de code où je peux supprimer tous les caractères spéciaux des données stockées dans MYSQL?Échantillon de code pour supprimer tous les caractères spéciaux des données stockées dans MYSQL?

je supprimer les caractères spéciaux suivants:

: ~ @ # $% *() _ + {} []; ': » <>

+0

un exemple de code dans quelle langue? PHP? ASPIC? PERL? – drudge

+0

Exemple: SELECT * FROM Film où removeSpecial (Film.name) = recherche. – meotimdihia

+0

Si vous travaillez avec du texte ASCII, il serait peut-être plus simple de spécifier les caractères que vous souhaitez autoriser plutôt que ceux que vous voulez supprimer. – Hammerite

Répondre

3

Essayez ceci? ... il a l'air terrible, mais cela fonctionne

SELECT * FROM Film where REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(Film.name,':',''),'~',''),'!',''),'@',''),'#',''),'$',''),'%',''),'*',''),'(',''),')',''),'_',''),'+',''),'{',''),'}',''),'[',''),']',''),';',''),'''',''),':',''),'"',''),'<',''),'>',''),'?','') = ? 

celui-ci privera également l'espace:

SELECT * FROM Film where REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(Film.name,':',''),'~',''),'!',''),'@',''),'#',''),'$',''),'%',''),'*',''),'(',''),')',''),'_',''),'+',''),'{',''),'}',''),'[',''),']',''),';',''),'''',''),':',''),'"',''),'<',''),'>',''),'?',''),' ','') = ? 
+0

merci, mais est-ce cause beaucoup lent, dans la requête? parce que remplacer plusieurs .... – meotimdihia

+1

C'est parce qu'il doit faire le remplacement pour chaque rangée. Est-il possible d'ajouter une colonne spéciale 'name_search' pour celle sans caractères spéciaux? Vous pouvez le garder à jour tous les soirs comme ceci: UPDATE Film SET name_search = REPLACE .... (nom, ....) 'Vous pouvez alors lancer la recherche sur name_search et le remplacement sera déjà fait. Cela vous permettrait aussi d'utiliser l'opérateur LIKE et de faire un meilleur usage des index, ce qui rendrait les choses plus rapides. –

+0

Merci de nous avoir montré que MySQL ne devrait jamais être utilisé dans tout ce qui dépasse les homeworks universitaires! –

Questions connexes