Para escapar '
simplemente necesitas poner otro antes:''
Como muestra la segunda respuesta, es posible escapar de las comillas simples como esta:
select 'it''s escaped'
el resultado será
it's escaped
Si está concatenando SQL en un VARCHAR para ejecutar (es decir, SQL dinámico), le recomendaría parametrizar el SQL. Esto tiene el beneficio de ayudar a protegerse contra la inyección de SQL y significa que no tiene que preocuparse por escapar de las citas como esta (lo que hace al duplicar las citas).
por ejemplo, en lugar de hacer
DECLARE @SQL NVARCHAR(1000)
SET @SQL = 'SELECT * FROM MyTable WHERE Field1 = ''AAA'''
EXECUTE(@SQL)
prueba esto:
DECLARE @SQL NVARCHAR(1000)
SET @SQL = 'SELECT * FROM MyTable WHERE Field1 = @Field1'
EXECUTE sp_executesql @SQL, N'@Field1 VARCHAR(10)', 'AAA'