¿Cómo insertar un valor que contiene un apóstrofo (comilla simple)?

Resuelto leora asked hace 14 años • 13 respuestas

¿Cuál es la sintaxis SQL correcta para insertar un valor con un apóstrofe?

Insert into Person
  (First, Last)
Values
  'Joe',
  'O'Brien'

Sigo recibiendo un error porque creo que el apóstrofo después de la O es la etiqueta final del valor.

leora avatar Dec 16 '09 10:12 leora
Aceptado

Escapa del apóstrofe (es decir, duplica el carácter de comilla simple) en tu SQL:

INSERT INTO Person
    (First, Last)
VALUES
    ('Joe', 'O''Brien')
              /\
          right here  

Lo mismo se aplica a las consultas SELECT:

SELECT First, Last FROM Person WHERE Last = 'O''Brien'

El apóstrofo, o comilla simple, es un carácter especial en SQL que especifica el principio y el final de los datos de cadena. Esto significa que para usarlo como parte de los datos de su cadena literal necesita escapeel carácter especial. Con una cotización simple, esto generalmente se logra duplicando su cotización. (Dos comillas simples, no comillas dobles en lugar de comillas simples).

Nota : Sólo debería preocuparse por este problema cuando edite datos manualmente a través de una interfaz SQL sin formato, ya que escribir consultas fuera del desarrollo y las pruebas debería ser algo poco común. En el código existen técnicas y marcos (dependiendo de su pila) que se encargan de escapar de caracteres especiales, inyección SQL , etc.

Paul Sasik avatar Dec 16 '2009 03:12 Paul Sasik

Sólo tienes que duplicar las comillas simples...

insert into Person (First, Last)
values ('Joe', 'O''Brien')
Justin Niessner avatar Dec 16 '2009 03:12 Justin Niessner

Necesitas escapar del apóstrofe. En T-SQL esto es con un doble apóstrofo, por lo que su insertdeclaración se convierte en:

Insert into Person
(First, Last)
Values
'Joe', 'O''Brien'
David Hall avatar Dec 16 '2009 03:12 David Hall