sql >> Databáze >  >> RDS >> Mysql

Jak mohu vyhledat frázi Like O'% v MySql?

Vložil jsi doslovné zpětné lomítko. Tohle stačí:

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

Pro testování:

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

Aktualizace: Již existuje přijatá odpověď, takže jen přidám několik vysvětlení.

Za prvé jsem přehlédl skutečnost, že uložená data byla poškozena. Netřeba dodávat, že to vysvětluje, proč person_sname = 'O\\\'Brien' je pravda.

Za druhé, \ znak má v syntaxi MySQL dvě použití:

  1. Je to znak používaný ke skládání únikové sekvence :\n , \t ...
  2. Je to výchozí escape znak pro vložení literálu % a _ znaky ve výrazech LIKE :foo LIKE '%abc\%def%'

Problém je v tom, že se vkládá \ symbol ve výrazu LIKE spouští obě chování, takže ve skutečnosti musíte vložit čtyři zpětná lomítka pro získání jedna :

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

... pokud nezměníte druhý význam pomocí ESCAPE klauzule:

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

Samozřejmě, pokud data nebyla poškozena, můžete jednoduše:

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


  1. Jak zajistit automatické spouštění mysql? (pouze linux-cli)

  2. ORA-01950:žádná oprávnění pro tabulkový prostor 'USERS'

  3. mysql načte všechny řádky a zároveň použije souhrny

  4. Jak zkontrolovat, které zámky drží na stole