在SAP Hana中使用排序规则的ORDER_BY

2020-08-30 22:31发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


在我的桌子上,我有带有波兰音调符号的值。 我想查询它并以正确的顺序对结果进行排序。 我需要排序规则来执行此操作,但是我不知道如何在SAP Hana数据库中使用它。

测试表

创建列表TEST_ORDER_BY(
     ID BIGINT空,
     PL_VALUE VARCHAR(20)为空,
     DE_VALUE VARCHAR(20)空
 );

 插入TEST_ORDER_BY VALUES(1,'Aaa','Straße');
 插入TEST_ORDER_BY VALUES(2,'aaa','Strasse');
 插入TEST_ORDER_BY VALUES(3,'Bbbb','Strase');
 插入TEST_ORDER_BY VALUES(4,'bbbb','Strasze');
 插入TEST_ORDER_BY VALUES(5,'Ąaa','Aaa');
 插入TEST_ORDER_BY VALUES(6,'±aa','ßStrae');
 插入TEST_ORDER_BY VALUES(7,'zz','Zzzz');
 插入TEST_ORDER_BY VALUES(8,'zaąa','aaa');
 插入TEST_ORDER_BY VALUES(9,'zaąz','bbb');
 插入TEST_ORDER_BY VALUES(10,'zabz','Strasße');
 

SQL查询

 SELECT ID,pl_value
 来自TEST_ORDER_BY
 ORDER BY pl_value ASC; 

结果

 ID PL_VALUE
 1 Aaa
 3 Bbbb
 2 aaa
 4 bbbb
 10扎布兹
 8Zaąa
 9扎兹
 7 zz
 5Ąaa
 6±aa 

预期结果

 ID PL_VALUE
 ---------- --------------------
          1 Aaa
          2 aaa
          5Ąaa
          6±aa
          3 Bbbb
          4 bbbb
          8Zaąa
          9扎兹
         10扎布兹
          7 zz 

我需要的是 a ,后跟±,对于其他音素符号(如ęóśłżźń)也是如此。 我在数据库中找到了视图 M_COLLATIONS (没有抛光排序规则),并且在 TABLE_COLUMNS 视图中找到了列 COLLATION ,但是我不知道如何设置 用于指定的列。

我该怎么办? 我使用2.00.030.00.1522210459版本(2.0 SPS 03),如果不支持排序规则,什么解决方法?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


在我的桌子上,我有带有波兰音调符号的值。 我想查询它并以正确的顺序对结果进行排序。 我需要排序规则来执行此操作,但是我不知道如何在SAP Hana数据库中使用它。

测试表

创建列表TEST_ORDER_BY(
     ID BIGINT空,
     PL_VALUE VARCHAR(20)为空,
     DE_VALUE VARCHAR(20)空
 );

 插入TEST_ORDER_BY VALUES(1,'Aaa','Straße');
 插入TEST_ORDER_BY VALUES(2,'aaa','Strasse');
 插入TEST_ORDER_BY VALUES(3,'Bbbb','Strase');
 插入TEST_ORDER_BY VALUES(4,'bbbb','Strasze');
 插入TEST_ORDER_BY VALUES(5,'Ąaa','Aaa');
 插入TEST_ORDER_BY VALUES(6,'±aa','ßStrae');
 插入TEST_ORDER_BY VALUES(7,'zz','Zzzz');
 插入TEST_ORDER_BY VALUES(8,'zaąa','aaa');
 插入TEST_ORDER_BY VALUES(9,'zaąz','bbb');
 插入TEST_ORDER_BY VALUES(10,'zabz','Strasße');
 

SQL查询

 SELECT ID,pl_value
 来自TEST_ORDER_BY
 ORDER BY pl_value ASC; 

结果

 ID PL_VALUE
 1 Aaa
 3 Bbbb
 2 aaa
 4 bbbb
 10扎布兹
 8Zaąa
 9扎兹
 7 zz
 5Ąaa
 6±aa 

预期结果

 ID PL_VALUE
 ---------- --------------------
          1 Aaa
          2 aaa
          5Ąaa
          6±aa
          3 Bbbb
          4 bbbb
          8Zaąa
          9扎兹
         10扎布兹
          7 zz 

我需要的是 a ,后跟±,对于其他音素符号(如ęóśłżźń)也是如此。 我在数据库中找到了视图 M_COLLATIONS (没有抛光排序规则),并且在 TABLE_COLUMNS 视图中找到了列 COLLATION ,但是我不知道如何设置 用于指定的列。

我该怎么办? 我使用2.00.030.00.1522210459版本(2.0 SPS 03),如果不支持排序规则,什么解决方法?

付费偷看设置
发送
4条回答
haha101010
1楼 · 2020-08-30 23:06.采纳回答

Cześć,Wojciech。

请尝试使用注释2448829中的解决方案

对我来说,查询

 SELECT pl_value
 来自TEST_ORDER_BY
 带有参数('LOCALE'='pl')的ORDER BY pl_value ASC; 

在2.0 SPS 3上返回以下结果:

 Aaa
 aa
 Ąaa
 ±aa
 Bbbb
 bbbb
 扎阿
 扎兹
 扎布兹
 zz 

致谢

-Vitaliy

SC_Yao
2楼-- · 2020-08-30 23:26

此附加答案是在复活旧问题可带来益处时很少见的例子之一。 谢谢,维塔利(Vitaly)!

尽管如此,但有趣的是,该注释来自2017年,并指出对国家分类顺序的支持是计划中的功能。 由于此注释实际上是唯一提及此功能的地方,因此此功能似乎仍在开发中。 依赖未记录且未实现的功能可能会有风险。 (我认为整个WITH PARAMETER解决方法只是在尝试通过会话上下文从处理特定于区域设置的平台上迁移时并没有真正帮助。)

歪着头看世界
3楼-- · 2020-08-30 23:28

在stackoverflow上回答:

SAP HANA还不支持归类。 我认为,鉴于系统视图,此功能尚处于准备状态。

除了客户端排序之外,我没有看到一个很好的选择来模仿SQL/SQLScript中基于排序规则的排序。

huskylover
4楼-- · 2020-08-30 23:10

SPS04现在支持排序规则。

  :: =
  ORDER BY { [,order_by_expression [,…]]}

  :: =
   [] [ASC |  DESC] [首先为NULL |  NULL LAST]
  |   [ASC |  DESC] [首先为NULL |  NULLS LAST] []

 <位置> :: = <无符号整数>

  :: = COLLATE  

指定要使用的排序规则。 仅可用于定义为NVARCHAR或VARCHAR的列。

是COLLATIONS系统视图中列出的受支持的归类名称之一。

例如:col1 COLLATE TURKISH从mytable订单中选择*;

一周热门 更多>