Щоб уникнути, '
вам просто потрібно поставити ще один перед:''
Як показує друга відповідь, можна уникнути одинарних лапок таким чином:
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'