Oracle NLSSORT() 函数使用指南

Oracle NLSSORT() 是一个内置函数,它返回给定字符串的排序规则键以及显式或隐式指定的排序规则。

排序规则键是根据排序规则排序字符串的字节串。归类键的属性是,当根据它们的二进制顺序进行比较时,为给定归类生成的两个这样的键的相互排序与根据给定归类进行比较时源字符值的相互排序相同。

Oracle NLSSORT() 语法

这里是 Oracle NLSSORT() 函数的语法:

NLSSORT(str [, 'nlsparam' ])

参数

str

必需的。它可以是 CHAR, VARCHAR2, NCHAR, 或 NVARCHAR2 中的任何一种数据类型。

'nlsparam'

可选的。您可以使用这个 'NLS_SORT = sort' 形式设置此参数,其中 sort 是排序规则的名称。排序规则为大小写转换处理特殊语言的要求。如果您省略此参数,则排序规则由函数确定。

返回值

Oracle NLSSORT() 函数返回给定字符串的排序规则键以及显式或隐式指定的排序规则。

如果任意一个参数为 NULLNLSSORT() 将返回 NULL

Oracle NLSSORT() 示例

这里有几个展示了 Oracle NLSSORT() 函数用法的示例。

基本用法

SELECT
    NLSSORT('HELLO'),
    NLSSORT('WORLD')
FROM dual;

输出:

NLSSORT('HELLO')    NLSSORT('WORLD')
___________________ ___________________
48454C4C4F00        574F524C4400

排序规则

Oracle NLSSORT() 函数允许您指定排序规则以处理特殊语言的规则。

SELECT
    NLSSORT('HELLO'),
    NLSSORT('WORLD', 'NLS_SORT = XDanish')
FROM dual;

输出:

NLSSORT('HELLO')    NLSSORT('WORLD','NLS_SORT=XDANISH')
___________________ ______________________________________
48454C4C4F00        7A5A644B2300010101010100

排序

您可以在 SELECT 语句中使用 NLSSORT() 函数根据制定的排序规则进行排序。

首先,使用下面的 UNION 操作模拟一个数据集:

SELECT 'Gaardiner' name FROM DUAL
UNION ALL
SELECT 'Gaberd' name FROM DUAL
UNION ALL
SELECT 'Gaasten' name FROM dual;

如果您需要按照姓名生序排列,您可以使用下面的语句:

SELECT *
FROM (
    SELECT 'Gaardiner' name
    FROM DUAL
    UNION ALL
    SELECT 'Gaberd' name
    FROM DUAL
    UNION ALL
    SELECT 'Gaasten' name
    FROM DUAL
  ) t
ORDER BY name;

输出:

NAME
____________
Gaardiner
Gaasten
Gaberd

现在,让我们看看通过 'NLS_SORT = XDanish' 指定排序规则后发生什么:

SELECT *
FROM (
    SELECT 'Gaardiner' name
    FROM DUAL
    UNION ALL
    SELECT 'Gaberd' name
    FROM DUAL
    UNION ALL
    SELECT 'Gaasten' name
    FROM DUAL
  ) t
ORDER BY NLSSORT(name, 'NLS_SORT = XDanish');

输出:

NAME
____________
Gaberd
Gaardiner
Gaasten

这里,我们得到了一个完全不同的顺序。

NULL 参数

如果任意一个参数为 NULLNLSSORT() 将返回 NULL

SET NULL 'NULL';
SELECT
    NLSSORT(NULL)
FROM dual;

输出:

NLSSORT(NULL)
________________
NULL

在本示例中,我们使用 SET NULL 'NULL'; 语句将 NULL 值显示为 'NULL' 字符串。

结论

Oracle NLSSORT() 是一个内置函数,它返回给定字符串的排序规则键以及显式或隐式指定的排序规则。