文章
姚 鑫 · 二月 13 阅读大约需 3 分钟

第五十三章 SQL函数 %EXACT

第五十三章 SQL函数 %EXACT

排序规则函数,可将字符转换为精确的排序规则格式。

大纲

%EXACT(expression)

%EXACT expression

参数

  • expression - 字符串表达式,可以是列名、字符串文字、数字或另一个函数的结果,其中底层数据类型可以表示为任何字符类型(如CHARVARCHAR2)。

描述

%Exact返回精确排序规则序列中的表达式。此归类序列按如下方式对值进行排序:

  1. NULL排序在所有实际值之前。%Exact对空值没有影响。这与默认排序规则相同。
  2. 规范数值(无论输入为数字还是字符串)在字符串值之前按数字顺序排序。
  3. 字符串值按区分大小写的字符串顺序排序。字符串的精确排序顺序与ANSI标准的ASCII排序顺序相同:数字在大写字母字符之前排序,大写字母字符在小写字母字符之前排序。标点符号出现在序列中的多个位置。

这将导致如下所示的序列:

NULL
-2        /* 规范数排序 */
0
1
2
10
22
88
''         /* 空字符串 */
#          /* 逐个字符的字符串排序 */
-00        /* 非规范数字排序为字符串 */
0 Elm St.  /* 逐个字符的字符串排序 */
022        /* 非规范数字排序为字符串 */
1 Elm St.  
19 Elm St.
19 elm St. /* 字符串排序规则区分大小写 */
19Elm St.
2 Elm St.
201 Elm St.
21 Elm St.
Elm St.

%Exact通常用于按区分大小写的顺序排序包含字母的字符串值。SQL的默认设置是将所有字母转换为大写,以便进行排序。

%Exact是扩展,用于SQL查找查询。

可以在ObjectScript中使用%SYSTEM.Util类的COLLATION()方法执行相同的排序规则转换。

%Exact将输入字符串作为完全数字(规范)或混合字符字符串进行排序,在混合字符串中,数字与任何其他字符的处理方式相同。与%MVR排序规则相比,%MVR排序规则根据字符串中的数字子字符串对字符串进行排序。

DISTINCT 和 GROUP BY

DISTINCT子句和GROUP BY子句根据它们的大写默认排序规则对值进行分组,并返回全部大写字母的值,即使实际数据值都不是全部大写字母也是如此。

  • 可以使用%EXACT按大小写敏感值对值进行分组:按%EXACTmytable group中选择Name(Name)
  • 可以使用%Exact返回每个组的实际区分大小写的值:从MyTable GROUP BY NAME中选择%Exact(Name)

注:默认情况下,SQL索引以大写默认排序规则表示字符串数据。因此,指定精确排序规则可能会阻止使用可能会对性能产生重大影响的索引。

示例

以下示例按照%Exact排序规则对所有街道地址进行排序:

SELECT Name,Street 
FROM Sample.Person
ORDER BY %EXACT Street

下面的示例使用%Exact返回排序序列中高于‘Smith’的所有Name值。第一个示例使用圆括号语法,第二个示例省略圆括号。

SELECT Name 
FROM Sample.Person
WHERE %EXACT(Name) > 'Smith'
0
0 17
讨论 (0)1
登录或注册以继续