Reemplazar comillas simples en SQL Server

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 

Debe duplicar sus comillas simples de la siguiente manera:

 REPLACE(@strip, '''', '') 

Intenta REPLACE(@strip,'''','')

SQL usa dos comillas para representar una en una cadena.

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 .

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 ] .

Prueba a escaparte de la comilla simple con una comilla simple:

 Replace(@strip, '''', '') 

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.

Podría usar char (39)

 insert into my_table values('hi, my name'+char(39)+'s tim.') 

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.

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 statement 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!

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; 

seleccione reemplazar (colname, ” ”, ”) AS colname FROM. [dbo]. [Nombre de Db]