Kaçmak '
için önce bir tane daha koymanız gerekir:''
İkinci cevabın gösterdiği gibi, tek bir alıntıdan şu şekilde kaçmak mümkündür:
select 'it''s escaped'
sonuç olacak
it's escaped
SQL'i yürütmek için bir VARCHAR'a birleştiriyorsanız (yani dinamik SQL), SQL'i parametrelendirmenizi tavsiye ederim. Bu, SQL enjeksiyonuna karşı korunmaya yardımcı olma avantajına sahiptir, ayrıca bunun gibi alıntılardan kaçma konusunda endişelenmenize gerek olmadığı anlamına gelir (bu, tırnak işaretlerini ikiye katlayarak yaparsınız).
örneğin yapmak yerine
DECLARE @SQL NVARCHAR(1000)
SET @SQL = 'SELECT * FROM MyTable WHERE Field1 = ''AAA'''
EXECUTE(@SQL)
bunu dene:
DECLARE @SQL NVARCHAR(1000)
SET @SQL = 'SELECT * FROM MyTable WHERE Field1 = @Field1'
EXECUTE sp_executesql @SQL, N'@Field1 VARCHAR(10)', 'AAA'