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インジェクション攻撃を防ぎつつ、適切に文字列を挿入できます。


コメント