SQLのINSERT文で、シングルクォーテーション、ダブルクォーテーションをinsertする方法

※当サイトではアフィリエイト広告を利用しています

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

コメント