文字列のエスケープ処理
SQLiteで文字列の値を記述する場合は次の書式を使用します。
'文字列'
値をシングルクォーテーションで囲むことで文字列を表します。
ダブルクォーテーションで囲んだ場合は識別子となります。文字列を記述すべき箇所に識別子を記述すると文字列のように扱われるためダブルクォーテーションで囲んでも文字列として処理されているように見えますが、文字列はシングルクォーテーションで囲んで下さい。
文字列は記述された文字としての意味以外は持ちませんので特殊な記法などはありませんが、文字列はシングルクォーテーションで囲んで表現するため文字列の中にシングルクォーテーションを記述したい場合はエスケープ処理が必要となります。
シングルクォーテーションをエスケープする場合は、シングルクォーテーションの前にシングルクォーテーションを記述して「''」と記述します。
例えば「私の名前は'工藤'です」という値の文字列を記述する場合、次のように記述してしまうとどこからどこまでが文字列なのか分からなくなります。
'私の名前は'工藤'です'
そこで文字列の中にシングルクォーテーションが含まれる場合は次のように記述します。
'私の名前は''工藤''です'
文字列の中に「''」が現れた場合は、「'」は文字列を囲うために使用される「'」ではなく一つの文字としての「'」として扱われます。
サンプル
では実際に試してみます。
テーブルを1つ作成します。
データを2件追加します。
insert into texttest values(1, 'Summer'); insert into texttest values(2, 'I''m a student');
追加したデータを取得します。
「'I''m a student'」として追加した値が文字列の「I'm a student」として格納されていることが確認できました。