表达式兼容

最近更新时间:2025-11-18 10:10:22

我的收藏

数据类型

类型
MySQL数据类型
兼容性说明
数值类型
BOOLEAN
兼容
TINYINT、TINYINT UNSIGNED
兼容
SMALLINT、SMALLINT UNSIGNED
兼容
INT、INTEGER、INT UNSIGNED、INTEGER UNSIGNED
兼容
BIGINT、BIGINT UNSIGNED
兼容
FLOAT
兼容
DOUBLE
兼容
DECIMAL(m,d)
值域不同
TDSQL TP 引擎最大支持 Decimal(65,30)
向量引擎最大支持 Decimal(38)
字符类型
CHAR、VARCHAR
字符集向量引擎只支持 UTF-8 字符集和排序规则,不支持 GBK 等其他字符集。
重音符号敏感排序。
TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT
JSON
兼容
SET
兼容
ENUM
兼容
二进制字符类型
BINARY、VARBINARY
兼容
BIT
兼容,但向量引擎默认打印二进制串, MySQL 默认打印十六进制串。
TINYBLOB、BLOB、MEDIUMBLOB、
LONGBLOB
兼容
时间类型
YEAR
兼容
TIME
合法范围为'00:00:00'~'23:59:59',数据格式为'HH:MM:SS',超出范围的值可能会有不一致的行为,插入时自动取模到合法范围内。
TDSQL TP 引擎范围为'-838:59:59'~'838:59:59'。
DATE
向量引擎支持 yyyy-mm-dd,不支持 yyyy.mm.dd、yyyy#mm#dd 的表示方法。
合法范围是'0001-01-01'~'9999-12-31',宽松模式下还支持 '0000-00-00'~'0001-01-01' ,但非法范围内的函数行为可能是不一致的。
DATETIME
合法范围是'0001-01-01 00:00:00'~'9999-12-31 23:59:59',宽松模式下还支持 '0000-00-00 00:00:00'~'0001-01-01 00:00:00' ,但非法范围内的函数行为可能是不一致的。
TIMESTAMP
兼容
空间数据类型
GEOMETRY、POINT、LINESTRING、POLYGON、MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRYCOLLECTION
不兼容
说明:
TDSQL TP 引擎对于 string > double 的转换比较灵活,即使 string 中有非数字字符,也会进行转换,例如' ' → double,TDSQL TP 引擎将空字符变成0.0,'1x' → double,结果集是1.0。
向量引擎无法做这种非法值的转换,如遇到,可以打开 htap_enable_ve_execution_fallback开关,回退到 TP 引擎计算,或者修正非法值的转换,继续利用向量引擎高效计算。

控制函数

函数名
是否支持
使用限制
CASE
支持
-
IF()
支持
-
IFNULL()
支持
-
NULLIF()
支持
-

数值函数

函数名
是否支持
使用限制
%, MOD
支持
-
*
支持
-
+
支持
-
-
支持
-
-
支持
-
/
支持
-
ABS()
支持
-
ACOS()
支持
-
ASIN()
支持
-
ATAN()
支持
-
ATAN2(), ATAN()
不支持
-
CEIL()
支持,有差异
向量引擎中参数按浮点数处理。
CEILING()
支持,有差异
向量引擎中参数按浮点数处理。
CONV()
不支持
-
COS()
支持
-
COT()
支持
-
CRC32()
不支持
-
DEGREES()
支持
-
DIV
支持
-
EXP()
支持
-
FLOOR()
支持,有差异
向量引擎中参数按浮点数处理。
LN()
支持,有差异
输入非法参数,向量引擎会报错,而 MySQL 则会返回 NULL
LOG()
支持,有差异
输入非法参数,向量引擎会报错,而 MySQL 则会返回 NULL
LOG10()
支持,有差异
输入非法参数,向量引擎会报错,而 MySQL 则会返回 NULL
LOG2()
支持,有差异
输入非法参数,向量引擎会报错,而 MySQL 则会返回 NULL。
MOD()
支持
-
PI()
支持
-
POW()
支持
-
POWER()
支持
-
RADIANS()
支持
-
RAND()
不支持
-
ROUND()
支持,有差异
不支持ROUND(x, d) 的 d 为负数场景。
SIGN()
支持
-
SIN()
支持
-
SQRT()
支持
-
TAN()
支持
-
TRUNCATE()
不支持
-

时间日期函数

函数名
是否支持
使用限制
ADDDATE()
支持,有差异
向量引擎中,ADDDATE() 的返回值类型统一为 DATETIME 类型。
MySQL 中,ADDDATE() 的返回值类型与输入参数的类型一致。
ADDTIME()
不支持
-
CONVERT_TZ()
不支持
-
CURDATE()
支持
-
CURRENT_DATE(),CURRENT_DATE
支持
-
CURRENT_TIME(),CURRENT_TIME
不支持
-
CURRENT_TIMESTAMP(),CURRENT_TIMESTAMP
支持
-
CURTIME()
不支持
-
DATE()
支持
-
DATE_ADD()
支持,有差异
向量引擎不支持 SECOND_MICROSECOND 单位。
DATE_FORMAT()
不支持
向量引擎无原生 DATE_FORMAT() 函数。
DATE_SUB()
支持,有差异
向量引擎不支持 SECOND_MICROSECOND 单位。
DATEDIFF()
不支持
-
DAY()
支持
-
DAYNAME()
支持
-
DAYOFMONTH()
支持
-
DAYOFWEEK()
支持,有差异
向量引擎 :返回值范围0到6,表示0=星期天,1=星期一,...,6=星期六
MySQL:返回值范围1到7,表示1=星期天, 2=星期一, ..., 7=星期六
DAYOFYEAR()
支持
-
EXTRACT()
支持,有差异
向量引擎仅支持YEAR、MONTH、DAY、HOUR、MINUTE、SECOND、QUARTER、WEEK。
FROM_DAYS()
不支持
-
FROM_UNIXTIME()
不支持
-
GET_FORMAT()
不支持
-
HOUR()
支持,有差异
向量引擎 :HOUR() 仅支持 DATETIME 、TIMESTAMP参数类型。
MySQL:HOUR() 支持 DATETIME、TIMESTAMP、TIME参数类型。
LAST_DAY()
支持,有差异
输入非法参数,向量引擎会报错,而 MySQL 则会返回 NULL
LOCALTIME(),LOCALTIME
支持,有差异
向量引擎不支持 LOCALTIME(fsp) 形式的毫秒位数。
LOCALTIMESTAMP,LOCALTIMESTAMP()
支持,有差异
向量引擎不支持 LOCALTIME(fsp) 形式的毫秒位数。
MAKEDATE()
不支持
-
MAKETIME()
不支持
-
MICROSECOND()
支持,有差异
向量引擎:MICROSECOND() 支持 DATETIME 、TIMESTAMP参数类型
MySQL:MICROSECOND() 支持 DATETIME、TIMESTAMP、TIME参数类型
MINUTE()
支持
-
MONTH()
支持
-
MONTHNAME()
支持
-
NOW()
支持
-
PERIOD_ADD()
不支持
-
PERIOD_DIFF()
不支持
-
QUARTER()
支持
-
SEC_TO_TIME()
不支持
-
SECOND()
支持,有差异
向量引擎:SECOND() 仅支持 DATETIME 、TIMESTAMP参数类型。
MySQL:SECOND() 支持 DATETIME、TIMESTAMP、TIME参数类型。
STR_TO_DATE()
支持,有差异
向量引擎不支持%X%V%u,格式不匹配返回 NULL
SUBDATE()
支持,有差异
向量引擎:SUBDATE() 的返回值类型统一为 DATETIME 类型。
MySQL:SUBDATE() 的返回值类型与输入参数的类型一致。
SUBTIME()
不支持
-
SYSDATE()
不支持
-
TIME()
支持
-
TIME_FORMAT()
不支持
-
TIME_TO_SEC()
不支持
-
TIMEDIFF()
不支持
-
TIMESTAMP()
支持,有差异
向量引擎仅支持TIMESTAMP(expr),不支持TIMESTAMP(expr1, expr2)
TIMESTAMPADD()
支持
-
TIMESTAMPDIFF()
不支持
-
TO_DAYS()
不支持
-
TO_SECONDS()
不支持
-
UNIX_TIMESTAMP()
支持,有差异
向量引擎不支持UNIX_TIMESTAMP()语法,仅支持UNIX_TIMESTAMP(date)语法。
UTC_DATE()
不支持
-
UTC_TIME()
不支持
-
UTC_TIMESTAMP()
不支持
-
WEEK()
不支持
-
WEEKDAY()
支持,有差异
向量引擎:返回值范围0到6,表示0=星期天,1=星期一,...,6=星期六。
MySQL:返回值范围1到7,表示1=星期天, 2=星期一, ..., 7=星期六。
WEEKOFYEAR()
支持
-
YEAR()
支持
-
YEARWEEK()
支持
-

字符串函数

函数名
是否支持
使用限制
ASCII()
支持
-
BIN()
不支持
-
BIT_LENGTH()
支持
-
CHAR()
不支持
-
CHAR_LENGTH()
支持
-
CHARACTER_LENGTH()
支持
-
CONCAT()
支持
-
CONCAT_WS()
支持
-
ELT()
不支持
-
EXPORT_SET()
不支持
-
FIELD()
不支持
-
FIND_IN_SET()
不支持
-
FORMAT()
不支持
-
FROM_BASE64()
支持
-
HEX()
支持
-
INSERT()
不支持
-
INSTR()
支持
-
LCASE()
支持
-
LEFT()
支持
-
LENGTH()
不支持
-
LIKE
支持
-
LOAD_FILE()
不支持
-
LOCATE()
不支持
-
LOWER()
支持
-
LPAD()
支持,有差异
向量引擎中,LPAD() 函数不支持参数同时为空字符串,同时不支持二进制等其他形式。
LTRIM()
支持
-
MAKE_SET()
不支持
-
MATCH()
不支持
-
MID()
支持
-
NOT LIKE
支持
-
NOT REGEXP
支持
-
OCT()
不支持
-
OCTET_LENGTH()
支持
-
ORD()
支持,有差异
向量引擎 :空字符串返回 -1
MySQL :空字符串返回 0
POSITION()
不支持
-
QUOTE()
不支持
-
REGEXP
支持
-
REGEXP_INSTR()
不支持
-
REGEXP_LIKE()
支持
-
REGEXP_REPLACE()
支持
-
REGEXP_SUBSTR()
不支持
-
REPEAT()
支持
-
REPLACE()
支持
-
REVERSE()
支持
-
RIGHT()
支持
-
RLIKE
支持
-
RPAD()
支持,有差异
向量引擎中,RPAD()函数不支持参数同时为空字符串。
RTRIM()
支持
-
SOUNDEX()
不支持
-
SOUNDS LIKE
不支持
-
SPACE()
支持
-
STRCMP()
不支持
-
SUBSTR()
支持
-
SUBSTRING()
支持
-
SUBSTRING_INDEX()
支持
-
TO_BASE64()
支持
-
TRIM()
支持
-
UCASE()
支持
-
UNHEX()
支持,有差异
输入非法参数,向量引擎会报错,而 MySQL 则会返回 NULL
UPPER()
支持
-
WEIGHT_STRING()
不支持
-

类型转换函数

函数名
是否支持
使用限制
CAST()
支持,有差异
向量引擎只支持合法格式之间的转换。
CONVERT()
不支持
-

位操作函数

函数名
是否支持
使用限制
&
支持

>>
支持,有差异
向量引擎按有符号数移位,结果根据无符号数呈现,执行示例:
tdsql[***]> SELECT -8 >> 1 from t;
+----------------------+
| -8 >> 1 |
+----------------------+
| 18446744073709551612 |
| 18446744073709551612 |
+----------------------+
2 rows in set, 1 warning (0.02 sec)
MySQL执行示例:
MySQL [***]> SELECT -8 >> 1 ;
+---------------------+
| -8 >> 1 |
+---------------------+
| 9223372036854775804 |
+---------------------+
1 row in set, 1 warning (0.00 sec)
<<
支持,有差异
^
支持
-
BIT_COUNT
支持
-
|
支持
-
~
支持
-

JSON 函数

函数名
是否支持
使用限制
->
支持
-
->>
不支持
-
JSON_ARRAY()
支持
-
JSON_ARRAY_APPEND()
不支持
-
JSON_ARRAY_INSERT()
不支持
-
JSON_CONTAINS()
不支持
-
JSON_CONTAINS_PATH()
不支持
-
JSON_DEPTH()
不支持
-
JSON_EXTRACT()
支持
-
JSON_INSERT()
不支持
-
JSON_KEYS()
支持
-
JSON_LENGTH()
不支持
-
JSON_MERGE()
不支持
-
JSON_MERGE_PATCH()
支持
-
JSON_MERGE_PRESERVE()
不支持
-
JSON_OBJECT()
支持
-
JSON_OVERLAPS()
不支持
-
JSON_PRETTY()
支持
-
JSON_QUOTE()
不支持
-
JSON_REMOVE()
不支持
-
JSON_REPLACE()
不支持
-
JSON_SCHEMA_VALID()
不支持
-
JSON_SCHEMA_VALIDATION_REPORT()
不支持
-
JSON_SEARCH()
不支持
-
JSON_SET()
不支持
-
JSON_STORAGE_FREE()
不支持
-
JSON_STORAGE_SIZE()
不支持
-
JSON_TABLE()
不支持
-
JSON_TYPE()
不支持
-
JSON_UNQUOTE()
不支持
-
JSON_VALID()
支持
-
JSON_VALUE()
不支持
-
MEMBER OF()
不支持
-

聚合函数

函数名
是否支持
使用限制
AVG()
支持,有差异
向量引擎仅支持数值和字符串。
BIT_AND()
不支持
-
BIT_OR()
不支持
-
BIT_XOR()
不支持
-
COUNT()
支持
-
COUNT(DISTINCT)
支持
-
GROUP_CONCAT()
支持,有差异
向量引擎不支持多列。
JSON_ARRAYAGG()
不支持
-
JSON_OBJECTAGG()
不支持
-
MAX()
支持,有差异
向量引擎仅支持数值和字符串。
MIN()
支持,有差异
向量引擎仅支持数值和字符串。
STD()
支持,有差异
向量引擎仅支持数值和字符串。
STDDEV()
支持,有差异
向量引擎仅支持数值和字符串。
STDDEV_POP()
支持,有差异
向量引擎仅支持数值和字符串。
STDDEV_SAMP()
支持,有差异
向量引擎仅支持数值和字符串。
SUM()
支持,有差异
向量引擎仅支持数值和字符串。
VAR_POP()
支持,有差异
向量引擎仅支持数值和字符串。
VAR_SAMP()
支持,有差异
向量引擎仅支持数值和字符串。
VARIANCE()
支持,有差异
向量引擎仅支持数值和字符串。

窗口函数

函数名
是否支持
使用限制
CUME_DIST()
支持
-
DENSE_RANK()
支持
-
FIRST_VALUE()
支持
-
LAG()
支持
-
LAST_VALUE()
支持
-
LEAD()
支持
-
NTH_VALUE()
支持
-
NTILE()
支持
-
PERCENT_RANK()
支持
-
RANK()
支持
-
ROW_NUMBER()
支持
-

其他函数

函数名
是否支持
使用限制
<=>
支持,有差异
不兼容 NULL 行为。

语句结构

语法点
是否支持
使用限制
子查询
支持,有差异
向量引擎不支持量词 ALLANY
UNION
支持,有差异
向量引擎不支持
(SELECT DISTINCT c1
FROM t1
GROUP BY c2)
UNION ALL
(SELECT c1
FROM t1);
外连接
支持,有差异
不支持在外连接字段中使用相关子查询字段。
分组开窗口
支持,有差异
在使用窗口函数和分组时,不支持分组键中包含主键。