Pregunta

Estoy intentando insert algunos datos de texto en una tabla en SQL Server 9.

El texto incluye una comilla ( ').

¿Cómo me escape que?

He intentado utilizar dos comillas simples, pero me tiró algunos errores.

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

¿Fue útil?

Solución

Las comillas simples se escapó doblando hacia arriba , al igual que nos has mostrado en tu ejemplo. El siguiente código SQL 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.

Otros consejos

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

Por ejemplo

SET QUOTED_IDENTIFIER OFF;

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

SET QUOTED_IDENTIFIER ON;
-- set OFF then ON again

¿Qué hay de:

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

El desdoblamiento de la cita debería haber funcionado, por lo que es peculiar que no funcionó para usted; Sin embargo, una alternativa es el uso de comillas dobles, en lugar de los individuales, alrededor de la cadena. Es decir.,

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

2 formas de solucionar esto:


para ' simplemente puede doblar en la cadena, por ejemplo, select 'I''m happpy' -- will get: I'm happy


Para cualquier Charactor no está seguro de: en el servidor SQL se puede obtener de cualquier Unicode carbón por select unicode(':')

Así que este caso también se puede select 'I'+nchar(39)+'m happpy'

También otra cosa a tener cuidado es si es o no es realmente almacena como un ASCII clásica '(ASCII 27) o Unicode 2019 (que tiene una apariencia similar, pero no igual).
Esto no es un gran problema en las inserciones, pero puede significar el mundo en selecciona y actualizaciones.
Si es el valor Unicode luego escapar de la 'en una cláusula WHERE (por ejemplo, cuando bla = 'Trabajadores' Comp') devolverá al igual que el valor que está buscando no está allí si el "en 'Compensación al Trabajador' en realidad, es el valor Unicode.
si su cliente admite la aplicación de clave libre, así como copiar y pegar de entrada basada, podría ser Unicode en algunas filas, y ASCII en otros!
Una forma sencilla de confirmar esto es haciendo algún tipo de consulta abierta que traerá de vuelta el valor que está buscando, y luego copia y pega esto en Notepad ++ u otro editor de soporte Unicode.
La apariencia diferente entre el valor ASCII y el unicode debería ser obvio a los ojos, pero si se inclina hacia el ano, que se mostrará como 27 (ASCII) o 92 (unicode) en un editor hexadecimal.

Esto debería funcionar: utilizar una barra inclinada hacia atrás y poner comillas dobles

"UPDATE my_table SET row =\"hi, my name's tim.\";

Esto debería funcionar

DECLARE @singleQuote CHAR 
SET @singleQuote =  CHAR(39)

insert into my_table values('hi, my name'+ @singleQuote +'s tim.')

Sólo tiene que insertar un "antes que nada a insertar. Será como un carácter de escape en SQLserver

Ejemplo: Cuando se tiene un campo como, Estoy bien . tu puedes hacer: ACTUALIZACIÓN mi_tabla SET fila = 'I' 'm bien.';

string value = "Abhishek's";

value = Replace(value,"'","''");
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top