¿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 ya que creo que el apóstrofe después de O es la etiqueta final para el valor.
¿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 ya que creo que el apóstrofe después de O es la etiqueta final para el valor.
Respuestas:
Escape del apóstrofe (es decir, duplique el carácter de comillas simples) en su 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óstrofe, o comilla simple, es un carácter especial en SQL que especifica el comienzo y el final de los datos de cadena. Esto significa que para usarlo como parte de sus datos de cadena literal, necesita escape
el carácter especial. Con una sola cotización, esto se logra duplicando su cotización. (Dos caracteres de comillas simples, no comillas dobles en lugar de comillas simples).
Nota : Solo debe preocuparse por este problema cuando edite manualmente los datos a través de una interfaz SQL sin procesar, ya que escribir consultas fuera del desarrollo y las pruebas debería ser algo raro. En el código hay técnicas y marcos (dependiendo de su pila) que se encargan de escapar caracteres especiales, inyección SQL , etc.
Solo 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óstrofe, por lo que su insert
declaración se convierte en:
Insert into Person
(First, Last)
Values
'Joe', 'O''Brien'
Values
debe estar encerrado entre llaves (que luego tiene la misma respuesta que la de @JustinNiessner)
Porque se utiliza una comilla simple para indicar el inicio y el final de una cadena; Necesitas escapar de ella.
La respuesta corta es usar dos comillas simples, ''
para que una base de datos SQL almacene el valor como '
.
Mire el uso de REPLACE para desinfectar los valores entrantes:
Desea verificar ''''
y reemplazarlos si existen en la cadena con el ''''''
fin de escapar de la única comilla simple.
eduffy tuvo una buena idea . Simplemente lo entendió al revés en su ejemplo de código. Ya sea en JavaScript o en SQLite, puede reemplazar el apóstrofe con el símbolo de acento.
Él (accidentalmente estoy seguro) colocó el símbolo de acento como delimitador de la cadena en lugar de reemplazar el apóstrofe en O'Brian. De hecho, esta es una solución terriblemente simple para la mayoría de los casos.
El carácter del apóstrofe se puede insertar llamando a la función CHAR con el valor de búsqueda de la tabla ASCII del apóstrofe , 39. Los valores de cadena se pueden concatenar junto con un operador de concatenación .
Insert into Person
(First, Last)
Values
'Joe',
concat('O',char(39),'Brien')
Las comillas simples se escapan al duplicarlas ,
El siguiente SQL ilustra esta funcionalidad.
declare @person TABLE (
[First] nvarchar(200),
[Last] nvarchar(200)
)
insert into @person
(First, Last)
values
('Joe', 'O''Brien')
select * from @person
First | Last
===================
Joe | O'Brien
use comillas dobles alrededor de los valores.
insert into Person (First, Last) Values("Joe","O'Brien")
He said, "Don't!"
uso de comillas simples y / o comillas dobles, que se puede hacer: 'He said, "Don''t!"'
o "He said, ""Don't!"""
. Al agregar una nueva respuesta a una pregunta establecida con respuestas aceptadas, debe proporcionar información nueva y completa. Usar comillas dobles es nuevo, pero limitado a unos pocos DBMS; debe esforzarse por identificar al menos uno de los que sí los acepta.
Use una tecla de retroceso (en la tecla ~) en su lugar;
`O'Brien`