codecamp

OceanBase 字符值

字符数据是根据字符值大小比较的,而字符值则根据以下两种度量进行比较:

  • 二进制和语言比较
  • 空白填充或非填充比较语义

二进制和语言比较

二进制比较

在默认的二进制比较中,OceanBase 根据数据库字符集中字符的数字代码的级联值比较字符串。如果一个字符在字符集中的数值大于另一个,则该字符更大。OceanBase 不支持 ASCII 字符集和 EBCDIC 字符集。

语言比较

在语言排序中,SQL 排序和比较都按照 ​NLS_SORT​ 指定的语言规则。若字符编码的二进制序列与字符集要求的语言序列不匹配,则使用语言比较。若 ​NLS_SORT​ 参数的设置不是 ​BINARY​,且 ​NLS_COMP​ 参数设置为 ​LINGUISTIC​,则使用语言比较。

空白填充和非填充比较语义

空白填充比较语义

使用空白填充语义,若两个值的长度不同,则 OceanBase 首先将空格添加到较短的空格的末尾,以便它们的长度相等。然后,OceanBase 逐个字符地比较值,直到第一个不同的字符为止。在第一个不同位置具有较大字符的值被认为较大。如果两个值没有不同的字符,则认为它们相等。此规则意味着两个值仅在尾随空白数上不同时相等。

注意 
只有当比较中的两个值都是数据类型 CHAR、NCHAR、文本文字或 USER 函数返回的值时,OceanBase 就会使用空白填充的比较语义。

非填充比较语义

使用非填充语义,OceanBase 逐个字符地比较两个值,直到第一个不同的字符为止。该位置上具有较大字符的值被认为较大。如果两个不同长度的值在较短的值之前一直相同,则较长的值被认为较大。如果两个长度相等的值没有不同的字符,则认为这些值相等。

注意 
只要比较中的一个或两个值的数据类型为 ​VARCHAR2​ 或 ​NVARCHAR​2,OceanBase 就会使用非填充比较语义。

示例

使用不同的比较语义比较两个字符值的结果不同。本示例显示了使用空白填充语义和非填充语义比较。

空白填充

非填充

'ac' > 'ab'

'ac' > 'ab'

'ab' > 'a '

'ab' > 'a '

'ab' > 'a'

'ab' > 'a'

'ab' = 'ab'

'ab' = 'ab'

'ac' > 'ab'

'ac' > 'ab'

'a ' = 'a'

'a ' > 'a'

通常,空白填充和非填充比较的结果是相同的。而最后一行的比较示例说明了空白填充和非填充比较语义之间的区别。


OceanBase 日期值
OceanBase 数据类型优先级
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

OceanBase 控制台指南

OceanBase ODC 使用指南

OceanBase Web 版 ODC

OceanBase 客户端版 ODC

OceanBase Connector/J 开发者指南

OceanBase 什么是OceanBase Connector/J

OceanBase SQL 参考(MySQL 模式)

OceanBase SQL 参考(Oracle 模式)

OceanBase 基本元素

OceanBase 数据库对象

OceanBase 函数

OceanBase 单行函数

OceanBase 返回数字的字符串函数

OceanBase 通用比较函数

OceanBase 编码解码函数

OceanBase SQL 调优指南

OceanBase 相关协议

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }