sql-server - real - sql server escape special characters
Carácter de escape en SQL Server (5)
Quiero usar la cita con el carácter de escape. ¿Como lo puedo hacer?
He recibido un error en SQL Server
Comillas sin cerrar después de la cadena de caracteres.
Estoy escribiendo la consulta SQL en una variable varchar pero he recibido ese error:
Comillas sin cerrar después de la cadena de caracteres.
Quiero usar comillas como escape char.
Gracias por adelantado
Las citas de escape en MSSQL se realizan mediante una cita doble, por lo que un ''''
o un ""
producirá un escape ''
y "
, respectivamente.
Puede definir su carácter de escape, pero solo puede usarlo con una cláusula LIKE
.
Ejemplo:
SELECT columns FROM table
WHERE column LIKE ''%/%%'' ESCAPE ''/'
Aquí buscará %
en toda la cadena y así es como se puede usar el identificador ESCAPE
en SQL Server
.
Puede escapar de la cita de esta manera:
select ''it''''s escaped''
el resultado será
it''s escaped
Si está concatenando SQL en un VARCHAR para ejecutar (es decir, SQL dinámico), entonces recomiendo parametrizar el SQL. Esto tiene la ventaja de ayudar a protegerse contra la inyección de SQL y significa que no tiene que preocuparse por escapar de citas como esta (lo que hace duplicando las citas)
por ejemplo, en lugar de hacer
DECLARE @SQL NVARCHAR(1000)
SET @SQL = ''SELECT * FROM MyTable WHERE Field1 = ''''AAA''''''
EXECUTE(@SQL)
prueba esto:
DECLARE @SQL NVARCHAR(1000)
SET @SQL = ''SELECT * FROM MyTable WHERE Field1 = @Field1''
EXECUTE sp_executesql @SQL, N''@Field1 VARCHAR(10)'', ''AAA''
Solo necesitas reemplazar ''
con ''''
dentro de tu cadena
SELECT colA, colB, colC
FROM tableD
WHERE colA = ''John''''s Mobile''
También puede usar REPLACE(@name, '''''''', '''''''''''')
si genera el SQL dinámicamente
Si desea escapar dentro de una declaración similar, entonces necesita usar la sintaxis de ESCAPE
También vale la pena mencionar que se está dejando abierto a los ataques de inyección de SQL si no lo considera. Más información en Google o en: http://it.toolbox.com/wiki/index.php/How_do_I_escape_single_quotes_in_SQL_queries%3F