更新时间:2024-05-14 GMT+08:00
分享

数据类型比较规则

数据类型比较(排序)规则是指相同数据类型的值之间发生比较(排序)时遵循的比较(排序)规则。

表1 比较规则

序号

Oracle数据库

GaussDB数据库

差异

规则描述

1

Numeric值

支持。

-

支持基于数值大小的比较,位于数轴中相对靠近正方向的数字大于位于数轴中相对靠近反方向的数字,如 5 > 3、1 > -1、-1 > -2。

2

日期时间值

支持。

-

支持基于日期早晚的比较,较晚的日期/时间戳大于较早的日期/时间戳,如'2000-01-01 12:00:00' > '2000-01-01 11:59:59'。

3

二进制值

支持。

-

支持基于二进制值大小的比较,位于数轴中相对靠近正方向的数字大于位于数轴中相对靠近反方向的数字,如 1001 0101 > 1001 0011。

4

字符值

支持,有差异。

  • 有差异的内容:
    • 在GaussDB和Oracle中,支持的比较规则不完全相同,相同比较规则的名称也可能不同。
    • GaussDB和Oracle的比较规则在可指定性上有差异,例如GaussDB不支持指定表级别的比较规则,而Oracle支持。
    • GaussDB和Oracle在指定比较规则的语法上有差异,例如在GaussDB中,使用ENCODING、LC_CTYPE和LC_COLLATE三个参数决定创建数据库时使用的字符集、字符分类和比较规则,具体请参见《开发者指南》中“SQL参考 > SQL语法 > C > CREATE DATABASE”章节。而在Oracle中,各级别的比较规则通常由一系列带有NLS前缀的参数确定。
  • 无差异的内容:
    • 在GaussDB和Oracle中,对字符串的比较都遵循如下的基本规则:从字符串的第一个字符开始逐个比较,如果相等则继续比较下一个字符,直到出现不相等的字符或者有一个字符串已经结束为止。如果两个字符串的所有字符都相等,则认为它们相等;否则,以第一个不相等的字符的大小关系作为比较结果进行判断。另外,部分数据类型会在比较前对较短的字符串添加空格,直到两个字符串等长后再排序,如CHAR类型。
    • 对于单字符的比较,常见的比较规则有按字符集中的二进制值排序、单语言排序等。在选用的字符集和比较规则都为默认的情况下GaussDB和Oracle都使用单语言排序。
    • GaussDB和Oracle中,字符类型的比较规则与所用字符集紧密相关,比如大部分非Unicode字符集不支持单语言排序,因而默认使用二进制值排序。

-

5

对象值

不支持。

-

-

6

Varrays和嵌套表

支持,有差异。

Oracle和GaussDB均支持Varrays的比较,与Oracle不同的是,GaussDB不仅支持比较两个Varrays中的元素个数,还支持同类型的Varrays之间的比较。

-

7

数据类型优先级

支持。

-

-

8

数据转换(显示/隐式类型转换)

支持。

-

-

分享:

    相关文档

    相关产品