SQLiteでINSERT文を使用してダブルクォーテーション("
)を含む文字列を挿入するには、ダブルクォーテーションをエスケープする必要があります。
SQLiteでは、文字列リテラルをシングルクォート('
)で囲み、ダブルクォーテーション自体はエスケープせずに直接挿入できますが、シングルクォーテーションをエスケープする必要がある場合は、シングルクォーテーションを二重にする(''
)ことでエスケープします。
ダブルクォーテーションを含む文字列を挿入する例
INSERT INTO table_name (column_name) VALUES ('This is a "quoted" text');
このSQL文は、This is a "quoted" text
という文字列をtable_name
テーブルのcolumn_name
列に挿入します。
この場合、文字列内のダブルクォーテーションはエスケープせずにそのまま使用できます。
シングルクォーテーションを含む文字列を挿入する例
一方で、シングルクォーテーションを含む文字列を挿入する場合は、シングルクォーテーションをエスケープする必要があります。
例えば、It's a beautiful day
という文字列を挿入する場合は以下のようになります。
INSERT INTO table_name (column_name) VALUES ('It''s a beautiful day');
このSQL文では、It's a beautiful day
という文字列内のシングルクォーテーションをエスケープするために、シングルクォーテーションを二重にしています。
プログラムからSQLiteにデータを挿入する場合、特にJavaなどでPreparedStatement
を使用している場合は、このようなエスケープ処理を意識する必要はありません。
PreparedStatement
を使うことで、SQLインジェクション攻撃を防ぎつつ、適切に文字列を挿入できます。
コメント