1. ホーム
  2. sql

[解決済み】アポストロフィ(シングルクォート)を含む値を挿入する方法は?)

2022-03-25 12:31:18

質問

アポストロフィが含まれる値を挿入するための正しいSQL構文は何ですか?

Insert into Person
  (First, Last)
Values
  'Joe',
  'O'Brien'

Oの後のアポストロフィが値の終了タグだと思うので、エラーが出続けています。

どうすればいいですか?

SQLの中でアポストロフィをエスケープする(シングルクォートをダブルアップする)。

INSERT INTO Person
    (First, Last)
VALUES
    ('Joe', 'O''Brien')
              /\
          right here  

SELECTクエリも同様です。

SELECT First, Last FROM Person WHERE Last = 'O''Brien'


アポストロフィ(シングルクォート)は、SQLの特殊文字で、文字列データの先頭と末尾を指定するものです。つまり、これをリテラル文字列データの一部として使用するには、次のようにする必要があります。 escape という特殊文字があります。シングルクォートの場合は、通常、クォートを二重にすることでこれを実現します。(シングルクオートの代わりにダブルクオートを使用するのではなく、シングルクオートを2文字使用します)。

備考 : この問題は、生の SQL インタフェースでデータを手動で編集するときだけ心配すればよいのです。なぜなら、開発およびテスト以外でクエリを書くことはめったにないはずだからです。コードでは、特殊文字のエスケープを行う技術やフレームワークがあります(お使いのスタックに依存します)。 SQLインジェクション などがあります。