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í:
- Je to znak používaný ke skládání únikové sekvence
:
\n
,\t
... - 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'