【问题标题】:SQL Server COLLATION on table name表名上的 SQL Server COLLATION
【发布时间】:2011-02-16 09:54:13
【问题描述】:

对于排序规则设置为“Latin1_General_100_CS_AS”的 SQL Server 数据库,我想运行如下查询:

SELECT * FROM tableName,只有数据库中的表名叫做TableName。

SELECT * FROM TableName 工作正常

SELECT * FROM tableName 给出错误:

消息 208,第 16 级,状态 1,第 1 行 对象名称无效

如何使查询不区分大小写?

【问题讨论】:

  • 您使用该特定排序规则是否有原因?如果您使用 sql server 的默认排序规则,则表名不会区分大小写。

标签: sql sql-server collation


【解决方案1】:

我似乎记得在某个地方读到过你不能这样做的地方。

系统数据库表始终区分大小写。据我所知,您无法关闭该功能,而且这也不受您自己的排序规则设置的影响 - 系统目录表的处理方式不同。

但是,您可以做的是创建一个同义词:

CREATE SYNONYM tableName FOR dbo.TableName

然后您的选择将再次起作用。当然,为每种可能的大写/小写类型创建同义词是不切实际的——但这可能是解决几个最紧迫的问题的“快速解决方案”......

【讨论】:

  • 嘿 Marc 我认为相同的表格在 [] 之间时区分大小写,但这 question 证明我错了。也许有了 7 年以上的经验,您就可以了解这一点。
猜你喜欢
  • 1970-01-01
  • 2013-09-19
  • 2018-05-19
  • 1970-01-01
  • 1970-01-01
  • 2013-05-15
  • 1970-01-01
  • 2015-12-11
  • 2018-04-20
相关资源
最近更新 更多