1. ホーム
  2. sql-server

[解決済み] SQL Serverにおけるエスケープ文字

2022-03-14 09:47:34

質問

引用符をエスケープ文字と一緒に使いたいのですが、どうすればいいですか?特殊文字がある場合、以下のようなエラーが発生するのですが、どうすればよいでしょうか。

<ブロッククオート

文字列の後ろに閉じないクォーテーションマークがあります。

解決方法は?

エスケープするには ' の前に別のものを置くだけです。 ''

2番目の回答が示すように、このようにシングルクォートをエスケープすることも可能です。

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'