sql >> Databáze >  >> RDS >> Sqlserver

Escape řetězec v SQL Server, takže je bezpečné použít ve výrazu LIKE

Chcete-li speciální znaky ve výrazu LIKE ukončit, musíte jim předřadit znak escape. Můžete si vybrat, který escape znak použít s klíčovým slovem ESCAPE. (MSDN Ref)

Například toto ukončí symbol % pomocí \ jako escape znak:

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

Pokud nevíte, jaké znaky budou ve vašem řetězci, a nechcete s nimi zacházet jako se zástupnými znaky, můžete před všechny zástupné znaky uvést znak escape, např.:

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

(Všimněte si, že musíte také ukončit svůj escape znak a ujistěte se, že je to vnitřní replace takže neuniknete těm přidaným z jiného replace prohlášení). Pak můžete použít něco takového:

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

Nezapomeňte také vyhradit více místa pro proměnnou @myString, protože se prodlouží výměnou řetězce.



  1. Volání API z uložené procedury SQL Server

  2. MySQL vs. MariaDB:co potřebujete vědět

  3. Jak zjistit a zabránit neočekávanému nárůstu SQL Server databáze TempDB

  4. Chyba Heroku PostgreSQL GROUP_BY v aplikaci Rails