string_escape special real especiales escape escapar dobles comillas characters caracteres sql-server escaping char

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