函数与操作符
计算节点对函数的支持
此文档仅列出部分经特殊处理的函数,若需要了解所有计算节点支持的函数,请向官方获取《计算节点最新功能清单》。
函数名称 | 支持状态 | 是否拦截 | 说明 |
---|---|---|---|
ABS() | 支持 | 否 | |
ACOS() | 支持 | 否 | |
ADDDATE() | 支持 | 否 | |
ADDTIME() | 支持 | 否 | |
AES_DECRYPT() | 支持 | 否 | |
AES_ENCRYPT() | 支持 | 否 | |
AND, && | 支持 | 否 | |
Area() | 支持 | 否 | |
AsBinary(), AsWKB() | 支持 | 否 | |
ASCII() | 支持 | 否 | |
ASIN() | 支持 | 否 | |
= | 支持 | 否 | |
:= | 不支持 | 是 | |
AsText(), AsWKT() | 支持 | 否 | |
ATAN2(), ATAN() | 支持 | 否 | |
ATAN() | 支持 | 否 | |
AVG() | 支持 | 否 | |
BENCHMARK() | 不支持 | 是 | |
BETWEEN ... AND ... | 支持 | 否 | |
BIN() | 支持 | 否 | |
BINARY | 支持 | 否 | |
BIT_AND() | 不支持 | 是 | |
BIT_COUNT() | 支持 | 否 | |
BIT_LENGTH() | 支持 | 否 | |
BIT_OR() | 不支持 | 是 | |
BIT_XOR() | 不支持 | 是 | |
& | 支持 | 否 | |
~ | 支持 | 否 | |
支持 | 否 | ||
^ | 支持 | 否 | |
Buffer() | 支持 | 否 | |
CASE | 支持 | 否 | |
CAST() | 支持 | 否 | |
CEIL() | 支持 | 否 | |
CEILING() | 支持 | 否 | |
Centroid() | 支持 | 否 | |
CHAR_LENGTH() | 支持 | 否 | |
CHAR() | 支持 | 否 | |
CHARACTER_LENGTH() | 支持 | 否 | |
CHARSET() | 支持 | 否 | |
COALESCE() | 支持 | 否 | |
COERCIBILITY() | 支持 | 否 | |
COLLATION() | 支持 | 否 | |
COMPRESS() | 支持 | 否 | |
CONCAT_WS() | 支持 | 否 | |
CONCAT() | 支持 | 否 | |
CONNECTION_ID() | 支持 | 否 | 前端session连接计算节点的connection_id |
Contains() | 支持 | 否 | |
CONV() | 支持 | 否 | |
CONVERT_TZ() | 支持 | 否 | |
CONVERT() | 支持 | 否 | 计算节点不论分片表或全局表,都不支持CONVERT(value, type)写法,只支持CONVERT(value using 字符集); |
COS() | 支持 | 否 | |
COT() | 支持 | 否 | |
COUNT() | 支持 | 否 | |
COUNT(DISTINCT) | 支持 | 否 | |
CRC32() | 支持 | 否 | |
Crosses() | 支持 | 否 | |
CURDATE() | 支持 | 否 | |
CURDATE(), CURRENT_DATE | 支持 | 否 | |
CURRENT_ROLE() | 不支持 | 是 | 计算节点不支持存储节点8.0新增角色功能 |
CURRENT_TIME(), CURRENT_TIME | 支持 | 否 | |
CURRENT_TIMESTAMP(),CURRENT_TIMESTAMP | 支持 | 否 | |
CURRENT_USER(), CURRENT_USER | 支持 | 否 | 返回当前计算节点数据库用户 |
CURTIME() | 支持 | 否 | |
DATABASE() | 支持 | 否 | 返回当前逻辑库名称 |
DATE_ADD() | 支持 | 否 | |
DATE_FORMAT() | 支持 | 否 | |
DATE_SUB() | 支持 | 否 | |
DATE() | 支持 | 否 | |
DATEDIFF() | 支持 | 否 | |
DAY() | 支持 | 否 | |
DAYNAME() | 支持 | 否 | |
DAYOFMONTH() | 支持 | 否 | |
DAYOFWEEK() | 支持 | 否 | |
DAYOFYEAR() | 支持 | 否 | |
DECODE() | 支持 | 否 | |
DEFAULT() | 支持 | 否 | |
DEGREES() | 支持 | 否 | |
DES_DECRYPT() (deprecated 5.7.6) | 支持 | 否 | |
DES_ENCRYPT() (deprecated 5.7.6) | 支持 | 否 | |
Dimension() | 支持 | 否 | |
Disjoint() | 支持 | 否 | |
DIV | 支持 | 否 | |
/ | 支持 | 否 | |
ELT() | 支持 | 否 | |
ENCODE() | 支持 | 否 | |
ENCRYPT() (deprecated 5.7.6) | 支持 | 否 | |
EndPoint() | 支持 | 否 | |
Envelope() | 支持 | 否 | |
<=> | 限制支持 | 是 | |
= | 支持 | 否 | |
Equals() | 支持 | 否 | |
EXP() | 支持 | 否 | |
EXPORT_SET() | 支持 | 否 | |
ExteriorRing() | 支持 | 否 | |
EXTRACT() | 支持 | 否 | |
ExtractValue() | 支持 | 否 | |
FIELD() | 支持 | 否 | |
FIND_IN_SET() | 支持 | 否 | |
FLOOR() | 支持 | 否 | |
FORMAT() | 支持 | 否 | |
FOUND_ROWS() | 不支持 | 是 | |
FROM_BASE64() | 支持 | 否 | |
FROM_DAYS() | 支持 | 否 | |
FROM_UNIXTIME() | 支持 | 否 | |
GeomCollFromText(),GeometryCollectionFromText() | 支持 | 否 | |
GeomCollFromWKB(),GeometryCollectionFromWKB() | 支持 | 否 | |
GeometryCollection() | 支持 | 否 | |
GeometryN() | 支持 | 否 | |
GeometryType() | 支持 | 否 | |
GeomFromText(), GeometryFromText() | 支持 | 否 | |
GeomFromWKB() | 支持 | 否 | |
GET_FORMAT() | 支持 | 否 | |
GET_LOCK() | 不支持 | 是 | |
GLength() | 支持 | 否 | |
>= | 支持 | 否 | |
> | 支持 | 否 | |
GREATEST() | 支持 | 否 | |
GROUP_CONCAT() | 支持 | 否 | |
GROUPING() | 不支持 | 是 | 存储节点8.0新增功能 |
GTID_SUBSET() | 支持 | 否 | |
GTID_SUBTRACT() | 支持 | 否 | |
HEX() | 支持 | 否 | |
HOUR() | 支持 | 否 | |
IF() | 支持 | 否 | |
IFNULL() | 支持 | 否 | |
IN() | 支持 | 否 | |
INET_ATON() | 支持 | 否 | |
INET_NTOA() | 支持 | 否 | |
INET6_ATON() | 支持 | 否 | |
INET6_NTOA() | 支持 | 否 | |
INSERT() | 支持 | 否 | |
INSTR() | 支持 | 否 | |
InteriorRingN() | 支持 | 否 | |
Intersects() | 支持 | 否 | |
INTERVAL() | 支持 | 否 | |
IS_FREE_LOCK() | 不支持 | 是 | |
IS_IPV4_COMPAT() | 支持 | 否 | |
IS_IPV4_MAPPED() | 支持 | 否 | |
IS_IPV4() | 支持 | 否 | |
IS_IPV6() | 支持 | 否 | |
IS NOT NULL | 支持 | 否 | |
IS NOT | 支持 | 否 | |
IS NULL | 支持 | 否 | |
IS_USED_LOCK() | 不支持 | 是 | |
IS | 支持 | 否 | |
IsClosed() | 支持 | 否 | |
IsEmpty() | 支持 | 否 | |
ISNULL() | 支持 | 否 | |
IsSimple() | 支持 | 否 | |
JSON_ARRAYAGG(col_or_expr) [over_clause] | 支持 | 是 | 存储节点8.0与5.7新增功能 |
JSON_OBJECTAGG(key, value) [over_clause] | 支持 | 是 | 存储节点8.0与5.7新增功能 |
JSON_PRETTY(json_val) | 支持 | 是 | 存储节点8.0与5.7新增功能 |
JSON_STORAGE_FREE(json_val) | 支持 | 是 | 存储节点8.0新增功能 |
JSON_STORAGE_SIZE(json_val) | 支持 | 是 | 存储节点8.0与5.7新增功能 |
JSON_MERGE_PATCH(json_doc, json_doc[, json_doc] ...) | 支持 | 是 | 存储节点8.0与5.7新增功能 |
JSON_TABLE(expr, path COLUMNS (column_list) [AS] alias) | 不支持 | 是 | 存储节点8.0新增功能 |
LAST_DAY | 支持 | 否 | |
LAST_INSERT_ID() | 支持 | 否 | |
LCASE() | 支持 | 否 | |
LEAST() | 支持 | 否 | |
<< | 支持 | 否 | |
LEFT() | 支持 | 否 | |
LENGTH() | 支持 | 否 | |
<= | 支持 | 否 | |
< | 支持 | 否 | |
LIKE | 支持 | 否 | |
LineFromText() | 支持 | 否 | |
LineFromWKB(), LineStringFromWKB() | 支持 | 否 | |
LineString() | 支持 | 否 | |
LN() | 支持 | 否 | |
LOAD_FILE() | 不支持 | 是 | |
LOCALTIME(), LOCALTIME | 支持 | 否 | |
LOCALTIMESTAMP, LOCALTIMESTAMP() | 支持 | 否 | |
LOCATE() | 支持 | 否 | |
LOG10() | 支持 | 否 | |
LOG2() | 支持 | 否 | |
LOG() | 支持 | 否 | |
LOWER() | 支持 | 否 | |
LPAD() | 支持 | 否 | |
LTRIM() | 支持 | 否 | |
MAKE_SET() | 支持 | 否 | |
MAKEDATE() | 支持 | 否 | |
MAKETIME() | 支持 | 否 | |
MASTER_POS_WAIT() | 不支持 | 是 | |
MATCH | 支持 | 否 | |
MAX() | 支持 | 否 | |
MBRContains() | 支持 | 否 | |
MBRDisjoint() | 支持 | 否 | |
MBREqual() (deprecated 5.7.6) | 支持 | 否 | |
MBRIntersects() | 支持 | 否 | |
MBROverlaps() | 支持 | 否 | |
MBRTouches() | 支持 | 否 | |
MBRWithin() | 支持 | 否 | |
MD5() | 支持 | 否 | |
MICROSECOND() | 支持 | 否 | |
MID() | 支持 | 否 | |
- | 支持 | 否 | |
MIN() | 支持 | 否 | |
MINUTE() | 支持 | 否 | |
MLineFromText(),MultiLineStringFromText() | 支持 | 否 | |
MLineFromWKB(),MultiLineStringFromWKB() | 支持 | 否 | |
MOD() | 支持 | 否 | |
% or MOD | 支持 | 否 | |
MONTH() | 支持 | 否 | |
MONTHNAME() | 支持 | 否 | |
MPointFromText(),MultiPointFromText() | 支持 | 否 | |
MPointFromWKB(), MultiPointFromWKB() | 支持 | 否 | |
MPolyFromText(),MultiPolygonFromText() | 支持 | 否 | |
MPolyFromWKB(),MultiPolygonFromWKB() | 支持 | 否 | |
MultiLineString() | 支持 | 否 | |
MultiPoint() | 支持 | 否 | |
MultiPolygon() | 支持 | 否 | |
NAME_CONST() | 支持 | 否 | |
NOT BETWEEN ... AND ... | 支持 | 否 | |
!=, <> | 支持 | 否 | |
NOT IN() | 支持 | 否 | |
NOT LIKE | 支持 | 否 | |
NOT REGEXP | 支持 | 否 | |
NOT, ! | 支持 | 否 | |
NOW() | 支持 | 否 | |
NULLIF() | 支持 | 否 | |
NumGeometries() | 支持 | 否 | |
NumInteriorRings() | 支持 | 否 | |
NumPoints() | 支持 | 否 | |
OCT() | 支持 | 否 | |
OCTET_LENGTH() | 支持 | 否 | |
OLD_PASSWORD() (deprecated 5.6.5) | 支持 | 否 | |
, OR | 支持 | ||
ORD() | 支持 | 否 | |
Overlaps() | 支持 | 否 | |
PASSWORD() | 支持 | 否 | |
PERIOD_ADD() | 支持 | 否 | |
PERIOD_DIFF() | 支持 | 否 | |
PI() | 支持 | 否 | |
+ | 支持 | 否 | |
Point() | 支持 | 否 | |
PointFromText() | 支持 | 否 | |
PointFromWKB() | 支持 | 否 | |
PointN() | 支持 | 否 | |
PolyFromText(), PolygonFromText() | 支持 | 否 | |
PolyFromWKB(), PolygonFromWKB() | 支持 | 否 | |
Polygon() | 支持 | 否 | |
POSITION() | 支持 | 否 | |
POW() | 支持 | 否 | |
POWER() | 支持 | 否 | |
PROCEDURE ANALYSE() | 不支持 | 是 | |
PS_CURRENT_THREAD_ID() | 不支持 | 是 | 存储节点8.0新增功能 |
PS_THREAD_ID(connection_id) | 不支持 | 是 | 存储节点8.0新增功能 |
QUARTER() | 支持 | 否 | |
QUOTE() | 支持 | 否 | |
RADIANS() | 支持 | 否 | |
RAND() | 支持 | 否 | JOIN查询中分片表不支持RAND任何语法 |
RANDOM_BYTES() | 支持 | 否 | |
REGEXP | 支持 | 否 | |
RELEASE_LOCK() | 不支持 | 是 | |
REPEAT() | 支持 | 否 | |
REPLACE() | 支持 | 否 | |
REVERSE() | 支持 | 否 | |
>> | 支持 | 否 | |
RIGHT() | 支持 | 否 | |
RLIKE | 支持 | 否 | |
ROLES_GRAPHML() | 不支持 | 是 | 存储节点8.0新增功能 |
ROUND() | 支持 | 否 | |
ROW_COUNT() | 不支持 | 是 | |
RPAD() | 支持 | 否 | |
RTRIM() | 支持 | 否 | |
SCHEMA() | 支持 | 否 | select schema()返回逻辑库名称 |
SEC_TO_TIME() | 支持 | 否 | |
SECOND() | 支持 | 否 | |
SESSION_USER() | 支持 | 否 | select session_user()显示为当前登录的计算节点数据库用户信息 |
SHA1(), SHA() | 支持 | 否 | |
SHA2() | 支持 | 否 | |
SIGN() | 支持 | 否 | |
SIN() | 支持 | 否 | |
SLEEP() | 不支持 | 是 | 可配置参数是否允许SLEEP函数,默认不允许 |
SOUNDEX() | 支持 | 否 | |
SOUNDS LIKE | 支持 | 否 | |
SPACE() | 支持 | 否 | |
SQL_THREAD_WAIT_AFTER_GTIDS()(deprecated 5.6.9) | 不支持 | 是 | |
SQRT() | 支持 | 否 | |
SRID() | 支持 | 否 | |
StartPoint() | 支持 | 否 | |
STD() | 不支持 | 是 | |
STDDEV_POP() | 不支持 | 是 | |
STDDEV_SAMP() | 不支持 | 是 | |
STDDEV() | 不支持 | 是 | |
STR_TO_DATE() | 支持 | 否 | |
STRCMP() | 支持 | 否 | |
SUBDATE() | 支持 | 否 | |
SUBSTR() | 支持 | 否 | |
SUBSTRING_INDEX() | 支持 | 否 | |
SUBSTRING() | 支持 | 否 | |
SUBTIME() | 支持 | 否 | |
SUM() | 支持 | 否 | |
SYSDATE() | 支持 | 否 | (注意:测试服务器的SYSDATE加了参数,使其等于NOW() 所以不会有延迟的区别,为了规避主从库数据不一致等风险) |
SYSTEM_USER() | 支持 | 否 | 显示为当前登录的计算节点数据库用户信息 |
TAN() | 支持 | 否 | |
TIME_FORMAT() | 支持 | 否 | |
TIME_TO_SEC() | 支持 | 否 | |
TIME() | 支持 | 否 | |
TIMEDIFF() | 支持 | 否 | |
* | 支持 | 否 | |
TIMESTAMP() | 支持 | 否 | |
TIMESTAMPADD() | 支持 | 否 | |
TIMESTAMPDIFF() | 支持 | 否 | |
TO_BASE64() | 支持 | 否 | |
TO_DAYS() | 支持 | 否 | |
TO_SECONDS() | 支持 | 否 | |
Touches() | 支持 | 否 | |
TRIM() | 支持 | 否 | |
TRUNCATE() | 支持 | 否 | |
UCASE() | 支持 | 否 | |
- | 支持 | 否 | |
UNCOMPRESS() | 支持 | 否 | |
UNCOMPRESSED_LENGTH() | 支持 | 否 | |
UNHEX() | 支持 | 否 | |
UNIX_TIMESTAMP() | 支持 | 否 | |
UpdateXML() | 支持 | 否 | |
UPPER() | 支持 | 否 | |
USER() | 支持 | 否 | SELECT user();查询出来的是当前登录的计算节点数据库用户 |
UTC_DATE() | 支持 | 否 | |
UTC_TIME() | 支持 | 否 | |
UTC_TIMESTAMP() | 支持 | 否 | |
UUID_SHORT() | 支持 | 否 | |
UUID() | 支持 | 否 | |
VALIDATE_PASSWORD_STRENGTH() | 支持 | 否 | |
VALUES() | 支持 | 否 | |
VAR_POP() | 不支持 | 是 | |
VAR_SAMP() | 不支持 | 是 | |
VARIANCE() | 不支持 | 是 | |
VERSION() | 支持 | 否 | 查询结果显示计算节点的version |
WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS() | 不支持 | 是 | |
WEEK() | 支持 | 否 | |
WEEKDAY() | 支持 | 否 | |
WEEKOFYEAR() | 支持 | 否 | |
WEIGHT_STRING() | 支持 | 否 | |
窗口函数 | 不支持 | 是 | 存储节点8.0新增功能 |
Within() | 支持 | 否 | |
X() | 支持 | 否 | |
XOR | 支持 | 否 | |
Y() | 支持 | 否 | |
YEAR() | 支持 | 否 | |
YEARWEEK() | 支持 | 否 |
聚合结果集合并(MERGE_RESULT)
MERGE_RESULT控制计算节点对聚合函数的结果是否进行合并。当该值设置为1时,计算节点将合并聚合函数的结果;当该值设置为0时,计算节点将不合并聚合函数的结果。
默认情况下,MERGE_RESULT值为1。
MERGE_RESULT=0时,含有聚合函数的SQL语句,计算节点将不合并结果集,每个数据节点的查询结果单独返回:
mysql> select count(*) from customer;
+----------+
| COUNT(*) |
+----------+
| 23 |
| 11 |
| 13 |
| 53 |
+----------+
4 rows in set (0.00 sec)
SET MERGE_RESULT=0 和SET SHOW_DNID=1,可用于统计业务表在各个数据节点上的分布情况:
mysql> set MERGE_RESULT=0;
mysql> set show_dnid=1;
mysql> select count(*) from customer;
+----------+------+
| COUNT(*) | DNID |
+----------+------+
| 13 | 12 |
| 11 | 15 |
| 53 | 13 |
| 23 | 14 |
+----------+------+
4 rows in set (0.00 sec)
结果集中的DNID列显示了每个数据节点的唯一标识ID。结果中,非常直观的显示了customer表在各个数据节点上的实际数据量。
MERGE_RESULT=1时,含有聚合函数的SQL语句,计算节点将所有数据节点的结果按SQL语义返回查询结果:
mysql> set show_dnid=0;
mysql> set MERGE_RESULT=1;
mysql> select count(*) from customer;
+----------+
| COUNT(*) |
+----------+
| 100 |
+----------+
1 row in set (0.00 sec)