¿Cómo insertar un valor que contiene un apóstrofo (comilla simple)?
¿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.
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 escape
el 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.
Sólo tienes que duplicar las comillas simples...
insert into Person (First, Last)
values ('Joe', 'O''Brien')
Necesitas escapar del apóstrofe. En T-SQL esto es con un doble apóstrofo, por lo que su insert
declaración se convierte en:
Insert into Person
(First, Last)
Values
'Joe', 'O''Brien'