0

例如,当我在配置单元查询中有“order by”子句时:

SELECT *
FROM categories
ORDER BY category_name

结果将首先排序为所有大写字母,然后是所有小写字母我需要一些表约束或配置来强制执行以下行为。使用 UPPER/LOWER 进行会话排序无济于事

当前结果:

AAA
KKK
ZZZ
aaa
bbb
yyy

预期成绩

aaa
AAA
bbb
KKK
yyy
ZZZ

是否有任何配置强制配置单元首先对数据按字母顺序排序。在 sql 中它的排序规则在 oracle 中它的 LTS 这种预期排序结果的正确配置是什么,以及在哪里设置它。

先谢谢了

4

2 回答 2

1

只是使用怎么样lower()

SELECT *
FROM categories
ORDER BY LOWER(category_name);

注意:这对于结果的情况是任意的。因为在所有现代排序规则中小写字母都在大写字母之后,您可以这样做:

SELECT c.*
FROM categories c
ORDER BY LOWER(c.category_name), c.category_name DESC;
于 2017-02-22T15:09:44.220 回答
0

为了实现字母排序或任何类型的排序,您可以在查询中使用 cluster by。

SELECT *
FROM categories
cluster BY LOWER(category_name);

您也可以使用带有排序依据的分发选项来获得更多定制的解决方案。SELECT * FROM categories DISTRIBUTE BY LOWER(category_name) SORT BY LOWER(category_name) DESC

于 2018-04-02T10:19:57.547 回答