Postgres如何支持语言环境排序,以及如何适应Java应用程序中的动态排序?

2020-09-16 07:45发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 我...

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

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


大家好,

我在SCP CF环境上创建一个命名为" postgres-mydb"的postgres实例,并将其绑定到我的Java应用程序。 创建数据库实例时,我没有为其分配排序规则和字符类型。 创建数据库后,我看到lc_collat​​e为" en_US.UTF-8",编码为u​​tf8(我认为这是来自OS系统)。 因此,当我执行sql以使用" order by"一词获取排序项时,PostgreSQL将使用en_US排序规则,但是这种排序结果对我来说似乎很奇怪。 例如,返回的排序字符串[" abc","#abc","〜abc"," abc co"]分隔字符串" abc"和" abc co"。 因此,我必须使用Collat​​e关键字进行查询:从myTable顺序中按名称COLLATE" C"选择*,然后出现我的问题:

1。 在我的Java应用程序中,我使用spring数据jpa和querydsl实现动态排序,但是,当我尝试在订单查询中添加归类时,我发现JPQL不支持" COLLATE",我只能使用本机 查询以支持" COLLATE",但是如果这样,则很难实现动态排序。 你们使用postgres是否有相同的问题? 如何同时实现语言环境排序和动态排序(当前我正在使用查询dsl)?

2。 我的第二个问题是,对不同区域设置进行排序的频率如何? 似乎我们不能依赖数据库排序,因为在初始化db时,确定了LC_COLLATE和LC_CTYPE,并且这两个类别无法再更改。 即使我们在编写查询sql时可以分配排序规则,但是由于用于查询的排序规则必须与我认为的服务器编码兼容,因此可以使用的排序规则也受到限制。 因此,Postgres如何支持所有语言环境?

同时我们应该依靠后端排序吗? 如果我的应用程序中需要排序的数据包含英语,中文,日语,是否可以在多语言环境中对数据进行排序?

非常感谢。如果有人可以提供一些建议,请寻求帮助。

谢谢

Vicky Chen

1条回答
路亽曱_Ryan
2020-09-16 08:34

在SAP Cloud平台上,我发现除了" 默认"," C "," POSIX "之外,还有更多预定义的排序规则。 :

但是,在我的本地Window主机上,我只能找到这三个预定义的归类" 默认"," C "," POSIX "。

据我所知,归类可能来自操作系统。 请参见此处。 但是在预定义的排序规则列表中,我找不到对中文的排序规则支持。 有谁知道如何初始化排序规则以支持SCP上的postgresql的中文字符?

谢谢

布鲁斯。

一周热门 更多>