sql >> Database >  >> RDS >> Sqlserver

Waarom krijg ik alle resultaten als ik een onderstrepingsteken in een LIKE-filter gebruik?

Wijzig uw WHERE staat als volgt:

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

Dit is een van de manieren waarop Oracle escape-tekens ondersteunt. Hier definieert u het escape-teken met de escape trefwoord. Zie deze link op Oracle Docs voor details.

De '_' en '%' zijn jokertekens in een LIKE bediende instructie in SQL.

De _ karakter zoekt naar de aanwezigheid van (elk) één enkel karakter. Als je zoekt op columnName LIKE '_abc' , het geeft je resultaat met rijen met 'aabc' , 'xabc' , '1abc' , '#abc' maar NIET 'abc' , 'abcc' , 'xabcd' enzovoort.

De '%' karakter wordt gebruikt voor het matchen van 0 of meer karakters. Dat betekent dat als je zoekt op columnName LIKE '%abc' , het geeft je resultaat met 'abc' , 'aabc' , 'xyzabc' enzovoort, maar geen 'xyzabcd' , 'xabcdd' en elke andere tekenreeks die niet eindigt op 'abc' .

In jouw geval heb je gezocht op '%_%' . Dit geeft alle rijen met die kolom met een of meer tekens, dat wil zeggen alle tekens, als waarde. Dit is waarom je alle rijen krijgt, ook al is er geen _ in uw kolomwaarden.



  1. RR versus YY in Oracle

  2. (mysql, php) Hoe krijg ik auto_increment veldwaarde voordat gegevens worden ingevoegd?

  3. strtotime gebruiken voor datums vóór 1970

  4. Vind en vervang de volledige mysql-database