2009-04-22 14 views
35

quiero insertar texto con comilla simple de Ej John a la mesa en el servidor de base de datos SQL 2005Cómo insertar texto con el servidor SQL sola cita 2005

+0

pero agregar otra comilla simple con una existente creará un problema mientras se guardan los datos en otra tabla ej .: inserte en la tabla1 (seleccione * de la tabla2) –

Respuesta

7
INSERT INTO Table1 (Column1) VALUES ('John''s') 

O puede utilizar un procedimiento almacenado y pasar el parámetro como -

usp_Proc1 @Column1 = 'John''s' 

Si está utilizando una consulta INSERT y no un procedimiento almacenado, que tendrá que escapar de la cita con dos citas, de lo contrario su visto bueno si no lo hace.

+0

cómo puede ser posible cuando el valor proviene de una variable – solairaja

+1

@solairaja - @somevar = 'Prueba' es ' – Kirtan

23

escape comilla simple con una sola adicional como Kirtan señaló
Y si usted está tratando de ejecutar un SQL dinámico (que no es una buena idea en primer lugar) a través de sp_executesql entonces el código de abajo funcionaría para usted

sp_executesql N'INSERT INTO SomeTable (SomeColumn) VALUES (''John''''s'')' 
19

La respuesta realmente depende de cómo esté haciendo el INSERT.

Si está especificando un SQL literal a continuación, es necesario utilizar el enfoque de doble señal:

-- Direct insert 
INSERT INTO Table1 (Column1) VALUES ('John''s') 

-- Using a parameter, with a direct insert 
DECLARE @Value varchar(50) 
SET @Value = 'John''s' 
INSERT INTO Table1 (Column1) VALUES (@Value) 

-- Using a parameter, with dynamic SQL 
DECLARE @Value varchar(50) 
SET @Value = 'John''s' 
EXEC sp_executesql 'INSERT INTO Table1 (Column1) VALUES (@p1)', '@p1 varchar(50)', @Value 

Si usted está haciendo el inserto del código, parámetros de uso:

// Sample ADO.NET 
using (SqlConnection conn = new SqlConnection(connectionString)) { 
    conn.Open(); 
    using (SqlCommand command = conn.CreateCommand()) { 
     command.CommandText = "INSERT INTO Table1 (Column1) VALUES (@Value)"; 

     command.Parameters.AddWithValue("@Value", "John's"); 

     command.ExecuteNonQuery(); 
    } 
} 

Si su los datos contienen entradas de usuario, directas o indirectas, USE PARAMETERS. Los parámetros protegen contra los ataques de inyección SQL. Nunca construyas SQL dinámico con la entrada del usuario.

+0

gracias ... pero este código no funcionará para la actualización dinámica querry –

+4

¿Puede dar más detalles sobre su consulta? Los parámetros funcionarán en casi todas las consultas. Tengo curiosidad por qué no funcionarán en tu caso. – Brannon

16

Esto funcionó para mí:

INSERT INTO [TABLE] 
    VALUES ('text','''test.com''', 1) 

Básicamente, se toma la comilla simple que desea insertar y sustituirla por dos. Entonces, si quiere insertar una cadena de texto ('texto') y agregarle comillas simples, sería ('' 'texto' ''). Espero que esto ayude.

1

Esta respuesta funciona en SQL Server 2005, 2008, 2012.

A veces el valor tiene comillas simples muchos. En lugar de agregar una sola cita al lado de cada cita individual como se describe arriba con 'John''s'. Y hay ejemplos que usan la función REPLACE para manejar muchas comillas simples en un valor.

Intente lo siguiente. Esta es una declaración de actualización, pero también puede usarla en una declaración INSERT.

SET QUOTED_IDENTIFIER OFF 

DECLARE @s VARCHAR(1000) 

SET @s = "SiteId:'1'; Rvc:'6'; Chk:'1832'; TrEmp:'150'; WsId:'81'; TtlDue:'-9.40'; TtlDsc:'0'; TtlSvc:'0'; TtlTax:'-0.88'; TtlPay:'0'; TipAmt:'0.00'; SvcSeq:'09'; ReTx:'N'; TraceId:'160110124347N091832';" 


UPDATE TransactionPaymentPrompt 
set PromptData = @s 

from TransactionPaymentPrompt tpp with (nolock) 
where tpp.TransactionID = '106627343' 
0

Se preguntó cómo escapar un Apostrophe character (') en SQL Server. Todas las respuestas anteriores hacen un excelente trabajo al explicar eso.

Sin embargo, dependiendo de la situación, el Right single quotation mark character (’) podría ser apropiado.

(sin caracteres de escape es necesario)

-- Direct insert 
INSERT INTO Table1 (Column1) VALUES ('John’s') 

• apóstrofe (U + 0027)

Ascii Apostrophe on Wikipedia

• comilla simple derecho (U + 2019)

Unicode Right single quotation on Wikipedia

Cuestiones relacionadas