230 votos

¿Cómo me escape una sola cita en sqlserver?

Estoy tratando de insertar algunos datos de texto en una tabla en SQL Server 9.

El texto incluye una comilla simple.

¿Cómo escapar de eso?

He intentado utilizar dos comillas simples, pero me lancé algunos errores.

. ej insert into my_table values('hi, my name''s tim.');

358voto

Cory Puntos 37551

Las comillas simples son escapadas doblando hacia arriba, del mismo modo que nos has mostrado en tu ejemplo. El SQL siguiente ilustra esta funcionalidad. Lo he comprobado en SQL Server 2008:

 DECLARE @my_table TABLE (
    [value] VARCHAR(200)
)

INSERT INTO @my_table VALUES ('hi, my name''s tim.')

SELECT * FROM @my_table
 

Resultados

 value
==================
hi, my name's tim.
 

22voto

Brad Waite Puntos 44

Si escapar de su comilla individual con otra comilla simple no funciona para usted (como no lo hizo para uno de mis recientes REPLACE() de consultas), puede utilizar SET QUOTED_IDENTIFIER OFF antes de la consulta, entonces SET QUOTED_IDENTIFIER ON después de la consulta.

Por ejemplo

 SET QUOTED_IDENTIFIER OFF;

UPDATE TABLE SET NAME = REPLACE(NAME, "'S", "S");

SET QUOTED_IDENTIFIER ON;
-- set OFF then ON again
 

9voto

Alex Martelli Puntos 330805

La duplicación de la comilla debería haber funcionado, así que resulta curioso que no funcionó para ti; Sin embargo, una alternativa es usar comillas dobles, en vez de solteras, alrededor de la cadena. Es decir,

insert into my_table values("hi, my name's tim.");

7voto

Paul McGuire Puntos 24790

¿Qué te parece:

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

1voto

user181945 Puntos 19

Estoy de acuerdo con Cory Larson, cuando estoy usando MSSQL 2005 Yo uso la comilla simple de escapar la comilla simple. Suena extraño pero es un trabajo para mí. Pruebe con eso.

Editar: Du'h, me olvido de la referencia: MSSQL 2005 escapando comillas

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X