文字列のエスケープ処理

SQLite でテーブルに文字列の値を格納する時にはシングルクォーテーションで囲って記述しますが、文字列の中にシングルクォーテーションが含まれている場合にはエスケープ処理が必要となります。ここでは SQLite で文字列に対してエスケープ処理を行う方法について解説します。

(Last modified: )

文字列にエスケープ処理をする

SQLite で文字列の値を記述する場合は次のように値をシングルクォーテーションで囲んで記述します。

'文字列'

ダブルクォーテーションで囲んだ場合は識別子となります。文字列を記述すべき箇所に識別子を記述すると文字列のように扱われるためダブルクォーテーションで囲んでも文字列として処理されているように見えますが、文字列はシングルクォーテーションで囲んで下さい。

シングルクォーテーションが区切りの文字として使用されるため、文字列の中にシングルクォーテーションが含まれる場合はエスケープ処理が必要となります。

テストを行うために次のようなテーブルを作成しました。

create table test(val text);

文字列にエスケープ処理をする(1)

次のようなシングルクォーテーションが含まれる文字列を考えてみます。

I'm a student.

この文字列をテーブルに格納するために次のように実行するとエラーにはならないのですが SQL 文が完結していないため入力を待っている状態となります。どこからどこまでが文字列なのか分からないためです。

insert into test values('I'm a student.');

文字列にエスケープ処理をする(2)

シングルクォーテーションが含まれる文字列の場合には、文字列の中のシングルクォーテーション(')の前にシングルクォーテーション(')を記述してエスケープ処理を行います。次のように実行してください。

insert into test values('I''m a student.');

文字列にエスケープ処理をする(3)

今度は無事値を格納することができました。確認の為、テーブルの値を取得してみます。

select * from test;

文字列にエスケープ処理をする(4)

格納されている値はエスケープ処理をする前の文字列だけが格納されていることが確認できました。このように文字列の中にシングルクォーテーションが含まれる場合にはエスケープ処理を行うことを忘れないで下さい。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。