Qual é a sintaxe correta do SQL para inserir um valor com um apóstrofo?
Insert into Person
(First, Last)
Values
'Joe',
'O'Brien'
Eu continuo recebendo um erro, pois acho que o apóstrofo após o O é a tag final do valor.
Qual é a sintaxe correta do SQL para inserir um valor com um apóstrofo?
Insert into Person
(First, Last)
Values
'Joe',
'O'Brien'
Eu continuo recebendo um erro, pois acho que o apóstrofo após o O é a tag final do valor.
Respostas:
Escape do apóstrofo (ou seja, dobre o caractere de aspas simples) em seu SQL:
INSERT INTO Person
(First, Last)
VALUES
('Joe', 'O''Brien')
/\
right here
O mesmo se aplica às consultas SELECT:
SELECT First, Last FROM Person WHERE Last = 'O''Brien'
O apóstrofo, ou aspas simples, é um caractere especial no SQL que especifica o início e o fim dos dados da string. Isso significa que, para usá-lo como parte de seus dados literais, você precisa escape
do caractere especial. Com uma única citação, isso geralmente é realizado duplicando sua citação. (Dois caracteres de aspas simples, não aspas duplas em vez de aspas simples.)
Nota : Você só deve se preocupar com esse problema ao editar manualmente os dados por meio de uma interface SQL bruta, pois a gravação de consultas fora do desenvolvimento e teste deve ser uma ocorrência rara. No código, existem técnicas e estruturas (dependendo da sua pilha) que cuidam da fuga de caracteres especiais, injeção SQL , etc.
Você só precisa dobrar as aspas simples ...
insert into Person (First, Last)
values ('Joe', 'O''Brien')
Você precisa escapar do apóstrofo. No T-SQL, isso ocorre com um duplo apóstrofo, portanto sua insert
declaração se torna:
Insert into Person
(First, Last)
Values
'Joe', 'O''Brien'
Values
deve ficar entre chaves (que, em seguida, faz com que seja a mesma resposta que a de @JustinNiessner)
Como uma aspas simples é usada para indicar o início e o fim de uma string; você precisa escapar disso.
A resposta curta é usar duas aspas simples - ''
- para que um banco de dados SQL armazene o valor como '
.
Observe o uso de REPLACE para higienizar os valores recebidos:
Você deseja verificar ''''
e substituí-los, se existirem na sequência com ''''''
, para escapar da aspas simples.
Eduffy teve uma boa ideia . Ele acabou de retroceder em seu exemplo de código. No JavaScript ou no SQLite, você pode substituir o apóstrofo pelo símbolo de acentuação.
Ele (acidentalmente, tenho certeza) colocou o símbolo de acentuação como o delimitador da corda, em vez de substituir o apóstrofo em O'Brian. Esta é de fato uma solução incrivelmente simples para a maioria dos casos.
O caractere do apóstrofo pode ser inserido chamando a função CHAR com o valor de pesquisa da tabela ASCII do apóstrofo , 39. Os valores da sequência podem ser concatenados juntamente com um operador concatenado .
Insert into Person
(First, Last)
Values
'Joe',
concat('O',char(39),'Brien')
As aspas simples são escapadas dobrando-as ,
O SQL a seguir ilustra essa funcionalidade.
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 aspas duplas em torno dos valores.
insert into Person (First, Last) Values("Joe","O'Brien")
He said, "Don't!"
uso de aspas simples e / ou aspas duplas - o que pode ser feito: 'He said, "Don''t!"'
ou "He said, ""Don't!"""
. Ao adicionar uma nova resposta a uma pergunta estabelecida há muito tempo com respostas aceitas, você deve fornecer informações novas e completas. O uso de aspas duplas é novo - mas limitado a alguns DBMS; você deve se esforçar para identificar pelo menos um daqueles que os aceita.
Use um bastão (na tecla ~);
`O'Brien`