ホームページ >データベース >mysql チュートリアル >SQL 列名の特殊文字をエスケープするにはどうすればよいですか?
SQL 列名の特殊文字の移動
SQL データベースは、テーブルと列の命名にかなりの柔軟性を提供します。 ただし、特定の文字は特定の SQL 関数用に予約されています。 たとえば、ピリオド (.) はテーブル名と列名の間の区切り文字として機能します。 列名にピリオドを直接含めると、データベースによる誤解が生じます。
解決策は、区切り文字を使用して特殊文字を効果的にエスケープすることです。 列名を引用符で囲むと、ピリオドが区切り文字ではなく名前の一部であることがデータベースに通知されます。 次の例では、「first.name」という名前の列を持つテーブルを作成します:
<code class="language-sql">CREATE TABLE people ( "first.name" VARCHAR(255) );</code>
SQL 標準と区切り文字の使用法
SQL:1999 標準では、識別子を区切るために二重引用符 ("") を使用することを推奨しています。これにより、引用符で囲まれていない識別子では通常禁止されている文字をエスケープできます。 例:
<code class="language-sql">CREATE TABLE "table name" ( column_name VARCHAR(255) );</code>
データベース固有の考慮事項
SQL 標準は存在しますが、デフォルトの動作はデータベース システムによって異なります。 MySQL と SQLite は区切り文字として二重引用符をサポートしていますが、デフォルトではサポートしていません。 MySQL には ANSI モードが必要ですが、SQLite ではこの動作を有効にするには PRAGMA identifiers=ON
が必要です。
SQL Server も二重引用符を受け入れますが、同様に、QUOTED_IDENTIFIER
オプションを ON
に設定する必要があります。
概要
SQL で列名をエスケープするための標準は存在しますが、データベース システムには異なるデフォルト設定があることがよくあります。 MySQL、SQLite、および SQL Server はすべて区切り文字として二重引用符をサポートしていますが、この機能を有効にするには特定の構成が必要です。 正しい方法については、必ずデータベースのドキュメントを参照してください。
以上がSQL 列名の特殊文字をエスケープするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。