数据类型
类型 | 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() | 不支持 | - |
位操作函数
函数名 | 是否支持 | 使用限制 |
& | 支持 | |
>> | 支持,有差异 | 向量引擎按有符号数移位,结果根据无符号数呈现,执行示例:
MySQL执行示例:
|
<< | 支持,有差异 | |
^ | 支持 | - |
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 行为。 |
语句结构
语法点 | 是否支持 | 使用限制 |
子查询 | 支持,有差异 | 向量引擎不支持量词 ALL 和 ANY 。 |
UNION | 支持,有差异 | 向量引擎不支持
|
外连接 | 支持,有差异 | 不支持在外连接字段中使用相关子查询字段。 |
分组开窗口 | 支持,有差异 | 在使用窗口函数和分组时,不支持分组键中包含主键。 |