このツールの動作
2つのことを行います。シングルクォートをそれぞれ二重にし——ANSI SQL がリテラル内のクォートを書く方法です——さらに全体を引用符で囲むので、返るのは完全なリテラルです。
O'Brien → 'O''Brien'
標準 SQL にバックスラッシュによるエスケープはないため、それ以外は何も変換されません。
往復を正確にしているのは、この囲みです。囲まなければ、単独のシングルクォートは '' になり、アンエスケープ側はこれを「引用符で囲まれた空文字列」と読むため、文字が消えてしまいます。PostgreSQL の quote_literal() や Node の SqlString.escape() が囲んだ形を返すのも同じ理由です。内側だけが必要で、自分で書いた引用符の間に貼り付けたい場合は 引用符で囲む を解除してください。ただしその形は元に戻せません。
使う前にお読みください
引用符のエスケープは、SQLインジェクションへの防御ではありません。 構文上の補助であって、セキュリティ境界ではありません。ユーザー、リクエスト、ファイル、他システムのいずれかから来た値は、パラメータ化クエリに置くべきものです。ドライバがプレースホルダーに値を別途バインドするため、値が文のテキストの一部になることはなく、どれだけ引用符を工夫してもクエリの意味を変えることはできません。
このツールが想定しているのはもう一方の場合です。マイグレーション、テストデータ、その場限りの SELECT に自分で書き込むリテラルで、テキストにアポストロフィが含まれており、引用符を数えずに正しい形が欲しいときです。
方言についての注意
ANSIの規則は最も安全な共通項ですが、普遍的ではありません。MySQLは NO_BACKSLASH_ESCAPES を有効にして動作していない限り、リテラル内で \ もエスケープ文字として扱います。したがってバックスラッシュで終わる値は、引用符の二重化だけでは完全には扱いきれません。手書きSQL以外の用途でこれに頼る前に、お使いの方言を確認してください。
プライバシー
すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。