Pregunta

¿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 la O es la etiqueta final para el valor.

¿Fue útil?

Solución

Escape el apóstrofe (es decir, duplicar el carácter de cita única) en tu SQL:

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

Lo mismo se aplica a consultas seleccionadas:

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

El apóstrofe, o cita única, es un carácter especial en SQL que especifica el comienzo y el final de los datos de la cadena. Esto significa que para usarlo como parte de sus datos de cadena literal que necesita para escape El personaje especial. Con una sola cita, esto se logra típicamente duplicando su cita. (Dos caracteres de citas individuales, no doble cita en lugar de una sola cita).

Nota: Solo debe preocuparse por este problema cuando edite manualmente datos a través de una interfaz SQL sin procesar, ya que escribir consultas fuera del desarrollo y las pruebas debería ser una ocurrencia rara. En el código hay técnicas y marcos (dependiendo de su pila) que se encargan de escapar de los caracteres especiales, inyección SQL, etc.

Otros consejos

Solo tienes que duplicar las citas individuales ...

insert into Person (First, Last)
values ('Joe', 'O''Brien')

Necesitas escapar del apóstrofe. En T-SQL Esto es con un doble apóstrofe, así que tu insert La declaración se convierte en:

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

Porque se usa una sola cita para indicar el comienzo y el final de una cadena; Necesitas escapar de él.

La respuesta corta es usar dos citas individuales - '' - Para que una base de datos SQL almacene el valor como '.

Mire el uso de reemplazo para desinfectar los valores entrantes:

Quieres verificar '''', y reemplácelos si existen en la cadena con '''''' Para escapar de la sola cita.

Eduffy tuvo una buena idea. Acaba de recibir 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 para la cuerda 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 de apóstrofe se puede insertar llamando al CARBONIZARSE función con el apóstrofe Búsqueda de tabla ascii valor, 39. Los valores de cadena se pueden concatenar junto con un concatenado operador.

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

Se escapan de citas individuales duplicándolas,

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

Resultados

First   | Last
===================
Joe     | O'Brien

Use comillas dobles alrededor de los valores.

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

Use un retroceso (en la tecla ~) en su lugar;

`O'Brien`
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top