sql >> データベース >  >> RDS >> Mysql

MySqlでO'%のようなフレーズを検索するにはどうすればよいですか?

    あなたは文字通りの円記号を挿入していました。これで十分です:

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

    テストするには:

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

    更新: すでに受け入れられている回答があるので、いくつか説明を追加します。

    まず、保存されているデータが破損しているという事実を見落としていました。言うまでもなく、それがperson_sname = 'O\\\'Brien'の理由を説明しています。 本当です。

    次に、\ 文字には、MySQL構文で2つの使用法があります:

    1. これは、エスケープシーケンス\n\t ...
    2. リテラル%を挿入するのはデフォルトのエスケープ文字です および_ 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'
    


    1. SQLite Total()のしくみ

    2. 時間文字列を10進時間に変換するPHP

    3. MySQLのプロセスリストの表示に完全なSQLクエリを表示する

    4. 巨大なテーブルの列タイプを変更する