Aby uciec, '
musisz po prostu umieścić inny przed:''
Jak pokazuje druga odpowiedź, możliwe jest uniknięcie pojedynczego cudzysłowu w ten sposób:
select 'it''s escaped'
wynik będzie
it's escaped
Jeśli łączysz SQL z VARCHAR w celu wykonania (np. Dynamiczny SQL), to polecam parametryzację SQL. Ma to tę zaletę, że pomaga chronić przed wstrzyknięciem SQL, a ponadto oznacza, że nie musisz się martwić o unikanie cudzysłowów w ten sposób (co robisz, podwajając cudzysłowy).
np. zamiast robić
DECLARE @SQL NVARCHAR(1000)
SET @SQL = 'SELECT * FROM MyTable WHERE Field1 = ''AAA'''
EXECUTE(@SQL)
Spróbuj tego:
DECLARE @SQL NVARCHAR(1000)
SET @SQL = 'SELECT * FROM MyTable WHERE Field1 = @Field1'
EXECUTE sp_executesql @SQL, N'@Field1 VARCHAR(10)', 'AAA'