Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Perché l'utilizzo di un carattere di sottolineatura in un filtro LIKE mi dà tutti i risultati?

Modifica il tuo WHERE condizione come questa:

WHERE mycolumn LIKE '%\_%' ESCAPE '\'

Questo è uno dei modi in cui Oracle supporta i caratteri di escape. Qui definisci il carattere di escape con escape parola chiave. Per i dettagli, vedere questo collegamento su Oracle Docs.

Il '_' e '%' sono caratteri jolly in un LIKE istruzione operata in SQL.

Il _ il personaggio cerca la presenza di (qualsiasi) un singolo personaggio. Se cerchi per columnName LIKE '_abc' , ti darà il risultato con righe con 'aabc' , 'xabc' , '1abc' , '#abc' ma NON 'abc' , 'abcc' , 'xabcd' e così via.

Il '%' il carattere viene utilizzato per la corrispondenza di 0 o più numeri di caratteri. Ciò significa che se esegui una ricerca per columnName LIKE '%abc' , ti darà il risultato con 'abc' , 'aabc' , 'xyzabc' e così via, ma non 'xyzabcd' , 'xabcdd' e qualsiasi altra stringa che non termina con 'abc' .

Nel tuo caso hai cercato per '%_%' . Questo darà tutte le righe con quella colonna che hanno uno o più caratteri, ovvero qualsiasi carattere, come valore. Questo è il motivo per cui ottieni tutte le righe anche se non c'è _ nei valori delle colonne.