我看到一两个线程在全球范围内讨论区分大小写,但我的问题更具体。
例如,我理解对文本值不区分大小写的搜索的兴趣。
但为什么我们要使用不区分大小写的数据库名称、表和列呢?
难道不会导致错误吗?使用数据库的脚本语言都是区分大小写的,因此,例如,如果我们没有为字段使用正确的大小写,则将找不到该字段......
The SQL:2008 http://en.wikipedia.org/wiki/SQL:2008 and SQL-99 http://en.wikipedia.org/wiki/SQL:1999标准将数据库定义为标识符不区分大小写,除非它们被引用。我找到了大部分ORMs http://en.wikipedia.org/wiki/Object-relational_mapping将在它们生成的 SQL 中引用标识符。
然而,您可能知道,并非所有关系数据库都严格遵守这些标准。 DB2 和 Oracle 100% 兼容。 PostgreSQL 基本上是兼容的,除了它会自动小写任何未引用的内容(我个人更喜欢这一点)。
mySQL 有点奇怪,因为它将每个表存储为文件系统上的文件。因此,它受文件系统区分大小写的影响。在 Windows 上:
CREATE TABLE FOO (a INTEGER);
CREATE TABLE 'Foo' (a INTEGER); -- Errors out, already exists
在 Linux 上:
CREATE TABLE FOO (a INTEGER); -- Creates FOO table
CREATE TABLE 'Foo' (a INTEGER); -- Creates Foo table
SQL Server 就更奇怪了。它会在创建时保留大小写,但是让您在创建后以任何方式引用它(即使您引用名称!)您不能创建两个表,其唯一的区别是它们的大小写。注意:SQL Server 确实有控制这些内容的配置选项,如标识符区分大小写将取决于 http://msdn.microsoft.com/en-us/library/ms188686%28SQL.90%29.aspx数据库实例的默认排序规则。多么令人困惑啊!
虽然在很大程度上我同意你的观点电脑(编程语言、数据库、文件系统、URL、密码等)应区分大小写,所有系统都是独立实现的,并且可能遵守也可能不遵守可能存在或不存在的标准。如果您了解特定数据库系统的详细情况及其行为方式,那么实现区分大小写的数据库绝对是可能的。
是真的your落实责任your系统以适合的方式you,而不是整个技术行业以一致的方式实施一切,让您的生活更轻松。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)