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

LIKE式で安全に使用できるように、SQLServerで文字列をエスケープします

    LIKE式の特殊文字をエスケープするには、それらの前にエスケープ文字を付けます。 ESCAPEキーワードで使用するエスケープ文字を選択できます。 (MSDN参照)

    たとえば、これはエスケープ文字として\を使用して、%記号をエスケープします:

    select * from table where myfield like '%15\% off%' ESCAPE '\'
    

    文字列に含まれる文字がわからず、ワイルドカードとして扱いたくない場合は、すべてのワイルドカード文字の前にエスケープ文字を付けることができます(例:

    )。
    set @myString = replace( 
                    replace( 
                    replace( 
                    replace( @myString
                    ,    '\', '\\' )
                    ,    '%', '\%' )
                    ,    '_', '\_' )
                    ,    '[', '\[' )
    

    (エスケープ文字もエスケープする必要があることに注意してください。それが内側のreplaceであることを確認してください。 したがって、他のreplaceから追加されたものをエスケープしないでください ステートメント)。次に、次のようなものを使用できます:

    select * from table where myfield like '%' + @myString + '%' ESCAPE '\'
    

    また、@ myString変数は文字列を置き換えると長くなるため、より多くのスペースを割り当てることを忘れないでください。



    1. SQLite Intersect

    2. サブクエリでのOrderByによるSQLエラー

    3. cPanelでMySQLデータベースを作成および維持する方法

    4. Django-DB-移行:保留中のトリガーイベントがあるため、テーブルを変更できません