Oracle は現在、最も人気のあるエンタープライズ レベルのデータベース管理システムの 1 つであり、さまざまなエンタープライズ レベルのアプリケーション プラットフォームで広く使用されています。 Oracle では、引用符は SQL ステートメント内の文字列値を表すマーク記号であるため、引用符のエスケープは一般的な問題です。文字列値自体に引用符が含まれている場合は、構文エラーを避けるために引用符をエスケープする必要があります。この記事では、Oracle における引用符エスケープの問題について詳しく紹介します。
Oracle では、文字列値を表すために一重引用符と二重引用符の 2 種類の引用符が使用されます。このうち、一重引用符は通常、テキスト文字列を表すために使用されます。例:
SELECT * FROM Employees WHERE FirstName = 'John';
上記のコードでは、'John' は、FirstName 列の値 John を持つ行を照合するために使用されるテキスト文字列を表します。
ただし、テキスト文字列自体に一重引用符が含まれている場合は、次のように構文エラーが発生します。
SELECT * FROM Employees WHERE FirstName = 'John's';
この場合、引用符は認識されず、構文エラーが発生します。この問題を解決するには、一重引用符を使用してエスケープします。例:
SELECT * FROM Employees WHERE FirstName = 'John''s';
上記のコードでは、2 つの一重引用符が連続して表示され、一重引用符文字を示しています。
Oracle では、一重引用符に加えて、識別子 (テーブル名、列名など) を表す二重引用符の使用もサポートしています。 。場合によっては、特に識別子に特殊な文字が含まれている場合には、二重引用符でエスケープすると便利です。例:
SELECT "First Name", "Last Name" FROM Employees;
上記のコードでは、「名」と「姓」は二重引用符で囲まれた識別子です。この場合、二重引用符は識別子のスペースやその他の特殊文字を保持します。
ただし、Oracle はデフォルトで識別子を大文字に変換するため、二重引用符を使用すると、Oracle では大文字と小文字が区別されることに注意することが重要です。したがって、二重引用符で囲まれた識別子に小文字が含まれている場合は、二重引用符を使用してエスケープする必要があります。例:
SELECT "First Name", "Last Name" FROM Employees;
上記のコードでは、「名」と「姓」は二重引用符で囲まれた識別子であるため、Oracle はこれらを通常の大文字と異なるものとみなし、大文字に変換しません。 。
Oracle では、一重引用符と二重引用符の両方を使用する必要がある場合があります。たとえば、次のようになります。
SELECT * FROM Employees WHERE "First Name" = 'John';
上記のコードでは、 「 First Name」は二重引用符で囲まれた識別子であり、「John」は一重引用符で囲まれたテキスト文字列です。
ただし、Oracle はデフォルトでは一重引用符と二重引用符の混合をサポートしていません。この状況をサポートするために Oracle で ANSI_QUOTES モードを使用する場合は、次のコマンドを使用する必要があります:
SET SQL92_RESERVED_WORDS = 'NONE';
上記のコマンドを使用すると、Oracle は一重引用符と二重引用符の混合使用をサポートできるようになります。
Oracle では、引用符のエスケープは非常に一般的な問題です。一重引用符を使用してテキスト文字列を表す場合は、テキスト文字列に一重引用符が含まれる可能性があり、2 つの連続した一重引用符を使用してエスケープできることに注意する必要があります。二重引用符を使用して識別子を表す場合は、Oracle がデフォルトで識別子を大文字に変換し、二重引用符を使用してエスケープできることに注意する必要があります。一重引用符と二重引用符の両方を使用する必要がある場合は、ANSI_QUOTES モードを使用できます。以上がOracleにおける引用符エスケープに関する基礎知識であり、読者の皆様の参考になれば幸いです。
以上がオラクルの引用符がエスケープするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。