在 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中文网其他相关文章!