处理 PostgreSQL 表和列名称中的区分大小写
PostgreSQL 对表名和列名的处理取决于它们是否被引用。 不带引号的标识符(例如 myTable
)不区分大小写,这意味着 MyTable
、mytable
和 MYTABLE
都引用同一个对象。 带引号的标识符(如 "MyTable"
)区分大小写。
这种差异通常会在迁移数据库时引起问题,特别是从 MSSQL 等系统迁移数据库时,在这些系统中,区分大小写的处理方式可能会有所不同。 例如,如果导入名为 STD_TYPE_CODES
的表,并且您尝试将其查询为 std_type_codes
,您将收到错误,因为 PostgreSQL 将它们解释为不同的对象。
解决方案:
<code class="language-sql">SELECT * FROM "STD_TYPE_CODES";</code>
但是,这对于很多桌子来说很麻烦。
PostgreSQL 的隐式小写: PostgreSQL 在内部自动将不带引号的标识符转换为小写。 因此,STD_TYPE_CODES
、std_type_codes
和 HeLLo
都被视为 "std_type_codes"
。
最佳实践:一致命名:为了避免将来出现问题,请在创建新表和视图时始终使用不带引号的小写名称。
重命名现有表: 对于大小写不一致的现有表,请使用 ALTER TABLE
:
<code class="language-sql">ALTER TABLE "FOO" RENAME TO foo;</code>
以上是如何解决 PostgreSQL 中表名和列名的大小写敏感问题?的详细内容。更多信息请关注PHP中文网其他相关文章!