文字列のエスケープ処理

広告
eyecatch

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

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

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)

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

SQLite入門の他の記事を見てみる

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。