İçinde kesme işareti olan bir değer eklemek için doğru SQL sözdizimi nedir?
Insert into Person
(First, Last)
Values
'Joe',
'O'Brien'
O sonra kesme işareti O değeri için bitiş etiketi olduğunu düşünüyorum gibi bir hata alıyorum.
İçinde kesme işareti olan bir değer eklemek için doğru SQL sözdizimi nedir?
Insert into Person
(First, Last)
Values
'Joe',
'O'Brien'
O sonra kesme işareti O değeri için bitiş etiketi olduğunu düşünüyorum gibi bir hata alıyorum.
Yanıtlar:
SQL'inizdeki kesme işaretinden (yani tek tırnak karakterini ikiye katlayın) kaçın:
INSERT INTO Person
(First, Last)
VALUES
('Joe', 'O''Brien')
/\
right here
Aynısı SELECT sorguları için de geçerlidir:
SELECT First, Last FROM Person WHERE Last = 'O''Brien'
Kesme işareti veya tek tırnak, SQL'de dize verilerinin başlangıcını ve sonunu belirten özel bir karakterdir. Bu, değişmez dize verilerinizin bir parçası olarak kullanmak escape
için özel karaktere ihtiyacınız olduğu anlamına gelir . Tek bir alıntı ile bu genellikle alıntı iki katına çıkarılır. (İki tek tırnak karakteri, tek tırnak yerine çift tırnak değil.)
Not : Bu soruyu yalnızca ham SQL arabirimi aracılığıyla manuel olarak düzenlerken endişelenmelisiniz, çünkü geliştirme ve test dışında sorgu yazma nadir bir durumdur. Kodda, kaçan özel karakterler, SQL enjeksiyonu vb.Ile ilgilenen teknikler ve çerçeveler (yığınıza bağlı olarak) vardır .
Sadece tek tırnak üzerinde ikiye katlamak zorunda ...
insert into Person (First, Last)
values ('Joe', 'O''Brien')
Bir dizenin başlangıcını ve sonunu belirtmek için tek bir tırnak işareti kullanıldığından; ondan kaçman gerek.
Kısa cevap, ''
SQL veritabanının değeri depolaması için iki - tek tırnak kullanmaktır '
.
Gelen değerleri sterilize etmek için REPLACE komutunu kullanmaya bakın:
Yalnız tek tırnaktan kaçmak için ''''
bunları dizede varsa kontrol etmek ve değiştirmek istiyorsunuz ''''''
.
eduffy'nin iyi bir fikri vardı . Sadece kod örneğinde geriye döndü. JavaScript veya SQLite'de kesme işaretini aksan sembolüyle değiştirebilirsiniz.
O (kazara eminim) aksan sembolünü O'Brian'daki kesme işaretini değiştirmek yerine dize için ayırıcı olarak yerleştirdi. Bu aslında çoğu durum için son derece basit bir çözümdür.
Kesme işareti karakteri kesme işaretinin ASCII tablo arama değeri olan CHAR işlevi çağrılarak ( 39) eklenebilir. Dize değerleri daha sonra bir birleştirilmiş işleç ile birleştirilebilir .
Insert into Person
(First, Last)
Values
'Joe',
concat('O',char(39),'Brien')
Tek tırnak işaretleri ikiye katlanarak kaçar ,
Aşağıdaki SQL bu işlevi göstermektedir.
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
değerlerin çevresinde çift tırnak işareti kullanın.
insert into Person (First, Last) Values("Joe","O'Brien")
He said, "Don't!"
tek tırnak ve / veya çift tırnak kullanarak - yapılabileceği: 'He said, "Don''t!"'
ya "He said, ""Don't!"""
. Uzun süredir köklü bir soruya kabul edilen cevaplarla yeni bir cevap eklerken, yeni ve eksiksiz bilgi vermelisiniz. Çift tırnak kullanmak yenidir - ancak birkaç DBMS ile sınırlıdır; onları kabul edenlerden en az birini tanımlamak için özen göstermelisiniz.
Bunun yerine bir backtick kullanın (~ tuşunda);
`O'Brien`