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

Hvorfor giver det mig alle resultater at bruge et Underscore-tegn i et LIKE-filter?

Rediger din WHERE tilstand som denne:

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

Dette er en af ​​måderne, hvorpå Oracle understøtter escape-karakterer. Her definerer du escape-tegnet med escape søgeord. For detaljer se dette link på Oracle Docs.

'_' og '%' er jokertegn i en LIKE betjent sætning i SQL.

_ karakter leder efter en tilstedeværelse af (en hvilken som helst) et enkelt tegn. Hvis du søger efter columnName LIKE '_abc' , vil det give dig et resultat med rækker med 'aabc' , 'xabc' , '1abc' , '#abc' men IKKE 'abc' , 'abcc' , 'xabcd' og så videre.

'%' tegn bruges til at matche 0 eller flere antal tegn. Det betyder, at hvis du søger efter columnName LIKE '%abc' , vil det give dig resultat med 'abc' , 'aabc' , 'xyzabc' og så videre, men ingen 'xyzabcd' , 'xabcdd' og enhver anden streng, der ikke ender med 'abc' .

I dit tilfælde har du søgt med '%_%' . Dette vil give alle rækker med den kolonne, der har et eller flere tegn, det vil sige alle tegn, som værdi. Det er derfor, du får alle rækkerne, selvom der ikke er nogen _ i dine kolonneværdier.



  1. Er der en SQLite svarende til MySQL's DESCRIBE [tabel]?

  2. Statisk vs dynamisk sql

  3. Søg efter hele ord match i MySQL

  4. Hvordan opretter man forbindelse til MySQL på Amazon EC2 fra Linux / Mac?