ในการหลบหนี'
คุณจำเป็นต้องใส่อีกครั้งก่อน:''
เนื่องจากคำตอบที่สองแสดงให้เห็นว่าเป็นไปได้ที่จะหลีกเลี่ยงเครื่องหมายคำพูดเดียวเช่นนี้:
select 'it''s escaped'
ผลลัพธ์จะเป็น
it's escaped
หากคุณเชื่อมต่อ SQL เข้ากับ VARCHAR เพื่อดำเนินการ (เช่นไดนามิก SQL) ฉันขอแนะนำให้กำหนดพารามิเตอร์ SQL สิ่งนี้มีประโยชน์ในการช่วยป้องกันการแทรก SQL บวกหมายความว่าคุณไม่ต้องกังวลเกี่ยวกับการหลีกเลี่ยงเครื่องหมายคำพูดเช่นนี้
เช่นแทนที่จะทำ
DECLARE @SQL NVARCHAR(1000)
SET @SQL = 'SELECT * FROM MyTable WHERE Field1 = ''AAA'''
EXECUTE(@SQL)
ลองสิ่งนี้:
DECLARE @SQL NVARCHAR(1000)
SET @SQL = 'SELECT * FROM MyTable WHERE Field1 = @Field1'
EXECUTE sp_executesql @SQL, N'@Field1 VARCHAR(10)', 'AAA'