あなたは文字通りの円記号を挿入していました。これで十分です:
SELECT person_sname
FROM people
WHERE person_sname = 'O\'Brien'
テストするには:
SELECT 'O\\\'Brien', 'O\'Brien'
更新: すでに受け入れられている回答があるので、いくつか説明を追加します。
まず、保存されているデータが破損しているという事実を見落としていました。言うまでもなく、それがperson_sname = 'O\\\'Brien'
の理由を説明しています。 本当です。
次に、\
文字には、MySQL構文で2つの使用法があります:
- これは、エスケープシーケンス
:
\n
、\t
... - リテラル
%
を挿入するのはデフォルトのエスケープ文字です および_
LIKE式 の文字 :foo LIKE '%abc\%def%'
問題は、\
を挿入することです LIKE式のシンボルは両方の動作をトリガーするため、実際には4つを挿入する必要があります。 1つを取得するための円記号 :
person_sname like 'O\\\\\'Brien'
... ESCAPE
で2番目の意味を変更しない限り 条項:
person_sname like 'O\\\'Brien' escape '|'
もちろん、データが破損していない場合は、次のようにすることができます。
person_sname = 'O\'Brien'
person_sname like 'O\'Brien'