DATABASE() |
支持 |
- |
UUID() |
支持 |
- |
UUID_SHORT() |
支持 |
- |
ANY_VALUE() |
支持,存在差异 |
- 作为分组的第一条数据是不确定的,与底层算子相关。例如同一条sql语句,GaussDB返回5和4,MySQL返回5和2。
CREATE TABLE t1(a INT, b INT);
INSERT INTO t1 VALUES(1, 5);
INSERT INTO t1 VALUES(2, 4);
INSERT INTO t1 VALUES(2, 2);
CREATE TABLE t2(a INT, b INT);
INSERT INTO t2 VALUES(2, 7);
INSERT INTO t2 VALUES(3, 9);
m_db=# SELECT ANY_VALUE(t1.b) FROM t1 LEFT JOIN t2 ON t1.a=t1.b GROUP BY t1.a;
any_value
-----------
5
4
(2 rows)
mysql> SELECT ANY_VALUE(t1.b) FROM t1 LEFT JOIN t2 ON t1.a=t1.b GROUP BY t1.a;
+-----------------+
| ANY_VALUE(t1.b) |
+-----------------+
| 5 |
| 2 |
+-----------------+
2 rows in set (0.04 sec)
DROP TABLE t1;
DROP TABLE t2;
- 与DISTINCT关键字一起使用的情况下,ORDER BY中排序的列没有包括在SELECT语句所检索的结果集的列中时,GaussDB目前不支持使用ANY_VALUE函数避免报错。
CREATE TABLE t1(a INT, b INT);
INSERT INTO t1 VALUES(1, 2);
INSERT INTO t1 VALUES(1, 3);
m_db=# SELECT DISTINCT a FROM t1 ORDER BY ANY_VALUE(b);
ERROR: For SELECT DISTINCT, ORDER BY expressions must appear in select list.
LINE 1: SELECT DISTINCT a FROM t1 ORDER BY ANY_VALUE(b);
^
mysql> SELECT DISTINCT a FROM t1 ORDER BY ANY_VALUE(b);
+------+
| a |
+------+
| 1 |
+------+
1 row in set (0.00 sec)
DROP TABLE t1;
- ANY_VALUE函数入参为NULL、字符串类型时,返回值类型与MySQL存在差异。例如:
- 入参为NULL时,GaussDB返回值类型为BIGINT,MySQL返回值类型为binary。
- 入参为VARCHAR类型时,GaussDB返回值类型为VARCHAR类型,MySQL返回值类型可能是VARCHAR类型,也可能是TEXT类型。
|
SLEEP() |
支持,存在差异 |
- 调用SLEEP函数的过程中,若使用Ctrl+C提前结束调用,GaussDB只显示Cancel request sent信息,与MySQL显示不一致。
- 除上述情况外,当SLEEP函数在其他SQL语句中被调用时,使用Ctrl+C提前结束语句,若操作恰好被SLEEP函数内部获取,则不会报错,若被系统中其他函数获取则报错,与MySQL表现不一致。
- 若在SLEEP函数执行的过程中,其所在的进程被相关命令结束(如:SELECT PG_TERMINATE_BACKEN(xxx);),GaussDB目前行为为报错处理,与MySQL不一致。
|
COLLATION() |
支持,存在差异 |
GaussDB仅支持utf8、utf8mb4、gbk、gb18030和latin1字符集下的字符序。 |
FOUND_ROWS() |
支持 |
- |
ROW_COUNT() |
支持,存在差异 |
- GaussDB没有SIGNAL语句,MySQL支持SIGNAL语句。
- GaussDB中,因为不存在连接参数CLIENT_FOUND_ROWS(设置之后返回匹配行数而不是影响行数),不受此参数的影响,统一返回影响行数,MySQL受此参数影响。
- GaussDB中INSERT ON DUPLICATE KEY UPDATE中触发冲突的场景,如果冲突一条返回1,MySQL返回2。
|
SYSTEM_USER() |
支持,存在差异 |
MySQL的配置文件中配置skip-name-resolve时,不会将127.0.0.1或::1解析为localhost,GaussDB没有相关参数,始终将127.0.0.1和::1解析为localhost。 |
DEFAULT() |
支持,存在差异 |
GaussDB支持使用列别名,MySQL不支持。 |
BENCHMARK() |
支持,存在差异 |
- 因为MySQL和GaussDB执行层框架存在差异,所以MySQL和GaussDB使该函数评估同一个表达式的执行时间不具有可比性。该函数仅用于评估GaussDB不同表达式的执行效率对比。
- 执行时间较长时,当在客户端输入Ctrl+C时,MySQL返回0后结束任务,GaussDB统一显示Cancel request sent后结束任务。
|