2010-06-12 9 views
5

ho bisogno di interrogare il mio database e trovare i risultati:non distinguono tra maiuscole interrogazione sensibile mysql

mysql_query("select * from ".ALU_TABLE." where username like '%$q%' or name like '%$q%'"); 

se ho un nome nel mio tavolo come il libro e ho entrare libro nella casella di ricerca che mostrano wont Libro

Ho bisogno di interrogare il mio database in modo da non essere case sensitive.

+0

possibile duplicato del [case insensitive per SQL come dichiarazione jolly] (http://stackoverflow.com/questions/2876789/case-insensitive-for-sql -like-wildcard-statement) –

+0

Inoltre: http://stackoverflow.com/search?q=mysql+case+insensitive –

risposta

4

È possibile utilizzare la funzione LOWER()

... WHERE LOWER(username) LIKE blabl OR LOWER(name) LIKE asdasd 
+2

Questo funziona. Ma non permetterete al db di usare gli indici se menzionate i nomi delle colonne come parametri di LOWER(), quindi potrebbe essere piuttosto lento. –

+0

Hmm, non lo sapevo. Bel consiglio –

3

Alla domanda è necessario aggiungere qualcosa come COLLATE utf8_general_ci. (Il suffisso _ci sta per maiuscole e minuscole.)

Dai un'occhiata alla documentazione: 9.1.7.1. Using COLLATE in SQL Statements:

Con la clausola COLLATE, è possibile escludere qualunque sia il confronto predefinito è per un confronto. COLLATE può essere utilizzato in varie parti delle istruzioni SQL.

+0

Il database potrebbe già essere impostato per le regole di confronto senza distinzione tra maiuscole e minuscole. –

Problemi correlati