quitar - Reemplazar comillas simples en SQL Server
sql server escape html (11)
Tengo esta función en SQL Server para reemplazar las comillas simples.
Pero cuando inserto una comilla simple arroja un error sobre Replace(@strip,'''''',''''))
:
Create Function [dbo].[fn_stripsingleQuote]
(@strStrip varchar(Max))
returns varchar
as
begin
declare @CleanString varchar(Max)
SET @var=(Replace(@strip,'''',''''))
return @var
end
Además de necesitar escapar de la cita (usando comillas dobles), también confundiste los nombres de las variables: estás usando @var y @strip, en lugar de @CleanString y @strStrip ...
Creo que esta es la declaración SQL más corta para eso:
CREATE FUNCTION [dbo].[fn_stripsingleQuote] (@strStrip varchar(Max))
RETURNS varchar(Max)
AS
BEGIN
RETURN (Replace(@strStrip ,'''''''',''''))
END
¡Espero que esto ayude!
Debe duplicar sus comillas simples de la siguiente manera:
REPLACE(@strip, '''''''', '''')
Intenta REPLACE(@strip,'''''''','''')
SQL
usa dos comillas para representar una en una cadena.
La creación de bandas / reemplazo / escamado de comillas simples de la entrada del usuario ( sanitización de entrada ), debe hacerse antes de que la instrucción SQL llegue a la base de datos.
Me encontré con una extraña anomalía que se aplicaría aquí. Al utilizar la API de Google y obtener la respuesta en formato XML, no se pudo convertir al tipo de datos XML debido a comillas simples.
Reemplazar (@Strip, '''' '''', '''')
no funcionaba porque la comilla simple era ascii carácter 146 en lugar de 39. Así que utilicé:
Reemplazar (@Strip, char (146), '''')
que también funciona para comillas simples comunes char (39) y cualquier otro carácter especial.
Parece que estás intentando duplicar la funcionalidad QUOTENAME . Esta función incorporada se puede usar para agregar delimitadores y delimitadores de escape dentro de cadenas y reconoce citas simples y dobles como delimitadores, así como corchetes [
y ]
.
Podría usar char (39)
insert into my_table values(''hi, my name''+char(39)+''s tim.'')
Prueba a escaparte de la comilla simple con una comilla simple:
Replace(@strip, '''''''', '''')
Si no funciona para usted el escapado de su oferta única con otra oferta única (como en el caso de una de mis consultas recientes REPLACE ()), puede usar SET QUOTED_IDENTIFIER OFF antes de su consulta, luego, FIJE QUOTED_IDENTIFIER ON después.
Por ejemplo
SET QUOTED_IDENTIFIER OFF;
UPDATE TABLE SET NAME = REPLACE(NAME, "''S", "S");
SET QUOTED_IDENTIFIER OFF;
Si realmente debe quitar completamente las comillas simples, puede hacer esto:
Replace(@strip, '''''''', '''')
Sin embargo, ordinariamente reemplazaría ''con'' ''y esto hará feliz a SQL Server al consultar la base de datos. El truco con cualquiera de las funciones SQL incorporadas (como reemplazar) es que también requieren que dupliques tus comillas simples.
Entonces para reemplazar ''con'' ''en el código harías esto:
Replace(@strip, '''''''', '''''''''''')
Por supuesto ... en algunas situaciones puede evitar tener que hacer esto completamente si usa parámetros al consultar la base de datos. Digamos que está consultando la base de datos desde una aplicación .NET, luego usaría la clase SqlParameter para alimentar los parámetros de SqlCommand para la consulta y todo este negocio de presupuesto único se encargará automáticamente. Este suele ser el método preferido, ya que los parámetros de SQL también ayudarán a prevenir ataques de inyección de SQL .