Oracle兼容-语法-Oracle ORDER BY兼容
在GreatSQL中,切换到ORACLE模式后,即可支持Oracle风格的排序规则。
1. 语法
1. ORDER BY order_expr [, order_expr...]
3. order_expr :
4. expr [ ASC | DESC ] [ NULLS FIRST | NULLS LAST ]
2. Oracle兼容说明
GreatSQL 和 Oracle 在 ORDER BY 排序时,对于 NULL 值的排序处理方式存在差异。
GreatSQL的做法:
- 按
ASC排序时,NULL排序在前; - 按
DESC排序时,NULL排序在后。
Oracle的做法与GreatSQL相反,即:
- 按
ASC排序时,NULL排序在后; - 按
DESC排序时,NULL排序在前。
可以设置 SET sql_mode = ORACLE 切换到ORACLE模式,选择使用Oracle的排序模式。
在ORACLE模式下,还可以在排序时加上 NULLS FIRST 显式设置在最终结果中将 NULL 排序在最前面。 也可以加上 NULLS LAST 显式设置在最终结果中将 NULL 排序在最后面。
3. 示例
1. greatsql> SET sql_mode = DEFAULT;
2. greatsql> CREATE TABLE t1 (id INT, desc1 VARCHAR(2), desc2 VARCHAR(2));
3. greatsql> INSERT INTO t1 VALUES (1, NULL, 'A'), (2, 'B', 'B'), (3, 'C', 'C'), (4, 'D', 'D');
5. greatsql> SELECT * FROM t1;
6. +------+-------+-------+
7. | id | desc1 | desc2 |
8. +------+-------+-------+
9. | 1 | NULL | A |
10. | 2 | B | B |
11. | 3 | C | C |
12. | 4 | D | D |
13. +------+-------+-------+
15. greatsql> SELECT * FROM t1 ORDER BY desc1;
16. +------+-------+-------+
17. | id | desc1 | desc2 |
18. +------+-------+-------+
19. | 1 | NULL | A |
20. | 2 | B | B |
21. | 3 | C | C |
22. | 4 | D | D |
23. +------+-------+-------+
25. greatsql> SELECT * FROM t1 ORDER BY desc1 DESC;
26. +------+-------+-------+
27. | id | desc1 | desc2 |
28. +------+-------+-------+
29. | 4 | D | D |
30. | 3 | C | C |
31. | 2 | B | B |
32. | 1 | NULL | A |
33. +------+-------+-------+
35. greatsql> SELECT * FROM t1 ORDER BY desc1 NULLS FIRST;
36. +------+-------+-------+
37. | id | desc1 | desc2 |
38. +------+-------+-------+
39. | 1 | NULL | A |
40. | 2 | B | B |
41. | 3 | C | C |
42. | 4 | D | D |
43. +------+-------+-------+
45. greatsql> SELECT * FROM t1 ORDER BY desc1 NULLS LAST;
46. +--------+-------+-------+
47. | id | desc1 | desc2 |
48. +--------+-------+-------+
49. | 2 | B | B |
50. | 3 | C | C |
51. | 4 | D | D |
52. | 1 | NULL | A |
53. +--------+-------+-------+
55. greatsql> SELECT * FROM t1 ORDER BY desc1 DESC NULLS FIRST;
56. +------+-------+-------+
57. | id | desc1 | desc2 |
58. +------+-------+-------+
59. | 1 | NULL | A |
60. | 4 | D | D |
61. | 3 | C | C |
62. | 2 | B | B |
63. +------+-------+-------+
65. greatsql> SELECT * FROM t1 ORDER BY desc1 DESC NULLS LAST;
66. +------+-------+-------+
67. | id | desc1 | desc2 |
68. +------+-------+-------+
69. | 4 | D | D |
70. | 3 | C | C |
71. | 2 | B | B |
72. | 1 | NULL | A |
73. +------+-------+-------+
问题反馈
联系我们
扫码关注微信公众号

