una simple sencilla dobles concatenar como comillas comilla caracter buscar sql sql-update sql-insert

sql - sencilla - ¿Cómo insertar un valor que contiene un apóstrofe(comilla simple)?



replace comilla simple sql (9)

Las comillas simples se escapan 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

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

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

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


Debido a que se utiliza una sola comilla para indicar el inicio y el final de una cadena; Necesitas escapar de ello.

La respuesta corta es usar dos comillas simples - '''' - para que una base de datos SQL almacene el valor como '' .

Mira usando REPLACE para desinfectar los valores entrantes:

Desea buscar '''''''' y reemplazarlos si existen en la cadena con '''''''''''' para escapar de la comilla única.


El carácter de 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 pueden concatenarse junto con un operador de concatenación .

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


Escape del apóstrofe (es decir, doble 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 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 del carácter especial. Con una sola cita, esto se logra normalmente duplicando su cotización. (Dos caracteres de comillas simples, no comillas dobles en lugar de una comilla simple).

Nota : solo debe preocuparse por este problema cuando edite datos manualmente a través de una interfaz de SQL sin formato, 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 tu pila) que se encargan de escapar de los caracteres especiales, la inyección de SQL , etc.


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

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


Solo tienes que doblar las comillas simples ...

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


Usa comillas dobles alrededor de los valores.

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


Use una marca de retroceso (en la tecla ~) en su lugar;

`O''Brien`


Eduffy tuvo una buena idea . Simplemente lo consiguió al revés en su código de ejemplo. 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 cuerda en lugar de reemplazar el apóstrofe en O''Brian. De hecho, esta es una solución tremendamente simple para la mayoría de los casos.