sql >> Databasteknik >  >> RDS >> Mysql

Hur kan jag söka efter en fras som O'% i MySql?

Du injicerade ett bokstavligt snedstreck. Detta räcker:

SELECT person_sname
FROM people
WHERE person_sname = 'O\'Brien'

För att testa:

SELECT 'O\\\'Brien', 'O\'Brien'

Uppdatering: Det finns redan ett accepterat svar så jag lägger bara till ett par förtydliganden.

Först hade jag förbisett det faktum att lagrad data var skadad. Det behöver inte sägas att det förklarar varför person_sname = 'O\\\'Brien' är sant.

För det andra, \ karaktär har två användningsområden i MySQL-syntax:

  1. Det är karaktären som används för att komponera escape-sekvenser :\n , \t ...
  2. Det är standard escape-tecken för att infoga bokstavlig % och _ tecken i LIKE-uttryck :foo LIKE '%abc\%def%'

Problemet är att infoga en \ symbolen i ett LIKE-uttryck utlöser båda beteendena så du behöver faktiskt infoga fyra snedstreck för att få ett :

person_sname like 'O\\\\\'Brien'

... om du inte ändrar den andra betydelsen med ESCAPE klausul:

person_sname like 'O\\\'Brien' escape '|'

Naturligtvis, om data inte var skadad kunde du helt enkelt:

person_sname = 'O\'Brien'
person_sname like 'O\'Brien'


  1. Skillnad mellan Oracle jdbc-drivrutinsklasser?

  2. Ansluta IBM DB2 med IRI Software

  3. Hur man väljer alla tabeller med kolumnnamn och uppdaterar den kolumnen

  4. Är primärnycklarna passé?