order by-oracle与mysql的SQL规范中区分大小写 简介

order by-oracle与mysql的SQL规范中区分大小写 简介,mysql,sql,oracle,case-sensitive,Mysql,Sql,Oracle,Case Sensitive,过去几年,我一直在使用mysql和mariaDB等新数据库 对于一个项目,我现在使用oracle已经很多年了,我惊讶地发现oracleorder by是区分大小写的。。。例如,在ASC中,大写字符超过小写字符 此行为是否符合SQL规范? 通用SQL语言规范是否概述了行为应该是什么,还是由每个供应商决定 我问,因为多年来使用MySQL或MiRADB让我考虑不区分大小写。p> Mysql 例如,我在mysql的文档中看到: 在字符类型列上,排序与所有其他比较一样 操作通常以不区分大小写的方式执行。这

过去几年,我一直在使用mysql和mariaDB等新数据库

对于一个项目,我现在使用oracle已经很多年了,我惊讶地发现oracle
order by
是区分大小写的。。。例如,在ASC中,大写字符超过小写字符

此行为是否符合SQL规范? 通用SQL语言规范是否概述了行为应该是什么,还是由每个供应商决定

我问,因为多年来使用MySQL或MiRADB让我考虑不区分大小写。p> Mysql 例如,我在mysql的文档中看到:

在字符类型列上,排序与所有其他比较一样 操作通常以不区分大小写的方式执行。这 表示相同列的顺序未定义 除了他们的案子。您可以强制将区分大小写的排序用于 列的顺序:按二进制列的名称排序


From:

FromOracle数据库SQL语言参考,12c版本1(12.1)

以语言方式比较ORDER BY的字符值时 子句中,它们首先转换为排序规则键,然后 与原始值进行比较。排序规则键生成为 在NLSSORT中明确指定或隐式使用相同的 NLSSORT使用的方法。显式和隐式生成 排序规则键受与 如第7-207页“NLSSORT”所述。由于这些 限制条件下,如果两个值 在用于生成排序规则的前缀上不要有差异 键,即使它们在值的其余部分不同

希望,这会对你有所帮助


祝你今天愉快

来自《Oracle数据库SQL语言参考》,12c版本1(12.1):

以语言方式比较ORDER BY的字符值时 子句中,它们首先转换为排序规则键,然后 与原始值进行比较。排序规则键生成为 在NLSSORT中明确指定或隐式使用相同的 NLSSORT使用的方法。显式和隐式生成 排序规则键受与 如第7-207页“NLSSORT”所述。由于这些 限制条件下,如果两个值 在用于生成排序规则的前缀上不要有差异 键,即使它们在值的其余部分不同

希望,这会对你有所帮助


祝你今天愉快

取决于数据的排序规则。@jarlh有趣的是。。。介意在这方面再多说点吗?对于那些在未来提出我的问题的人来说:)不幸的是,这可能是一个巨大的话题。这是《圣经》中的章节。与其说是“产品X做A,产品Y做B”,不如说是每个产品在默认情况下的行为。您可以在任何像样的SQL数据库系统中获得区分大小写的排序。在任何像样的SQL数据库系统中,您都可以获得不区分大小写的排序。Oracle文档因为它们有十年的老代码库、以前版本的兼容性问题和未来的与众不同之处(使用我们的而不是他们的)。这些问题的复杂性是什么?这是一个离题的Quora.com类型的问题。取决于数据的排序。@jarlh有趣。。。介意在这方面再多说点吗?对于那些在未来提出我的问题的人来说:)不幸的是,这可能是一个巨大的话题。这是《圣经》中的章节。与其说是“产品X做A,产品Y做B”,不如说是每个产品在默认情况下的行为。您可以在任何像样的SQL数据库系统中获得区分大小写的排序。在任何像样的SQL数据库系统中,您都可以获得不区分大小写的排序。Oracle文档因为它们有十年的老代码库、以前版本的兼容性问题和未来的与众不同之处(使用我们的而不是他们的)。这些问题的复杂性是什么?这是一个离题的Quora.com类型的问题。