sql >> Base de Datos >  >> RDS >> Sqlserver

Escape una cadena en SQL Server para que sea seguro usarla en la expresión LIKE

Para escapar de los caracteres especiales en una expresión LIKE, los antepone con un carácter de escape. Puede elegir qué carácter de escape usar con la palabra clave ESCAPE. (Referencia de MSDN)

Por ejemplo, esto escapa del símbolo %, usando \ como carácter de escape:

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

Si no sabe qué caracteres habrá en su cadena y no desea tratarlos como comodines, puede anteponer a todos los caracteres comodín un carácter de escape, por ejemplo:

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

(Tenga en cuenta que también debe escapar de su carácter de escape, y asegúrese de que sea el replace interno para que no se te escapen los agregados de los otros replace declaraciones). Entonces puedes usar algo como esto:

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

También recuerde asignar más espacio para su variable @myString ya que será más larga con el reemplazo de la cadena.