检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
TRUE/FALSE输出结果为t/f,MySQL为1/0。 MySQL:BOOL/BOOLEAN类型实际映射为TINYINT类型。 BOOLEAN 支持,存在差异 TINYINT[(M)] [UNSIGNED] [ZEROFILL] 支持,存在差异 输入格式: MySQL: 整型类型对于类似“1
GaussDB数据库兼容绝大多数MySQL的表达式,但存在部分差异。如未列出,表达式行为默认为GaussDB原生行为。 表1 表达式 MySQL数据库 GaussDB数据库 用户自定义变量@var_name 部分支持 全局变量@@var_name 部分支持 父主题: MySQL兼容性B模式
唯一约束和唯一索引概念不同。 唯一约束确保一列或者一组列中包含的数据对于表中所有的行都是唯一的。 如果没有声明DISTRIBUTE BY REPLICATION,则唯一约束的列集合中必须包含分布列。唯一索引用于限制索引字段值的唯一性,或者是多个字段组合值的唯一性。CREATE UNIQUE
数字操作函数列表 MySQL数据库 GaussDB数据库 差异 log2() 支持,存在差异 小数位显示与MySQL存在差异,受GaussDB浮点数据类型限制,可通过参数extra_float_digits控制小数位个数显示。 由于输入精度内部处理差异,GaussDB与MySQL会存在结果计算差异。
大长度是1073741823,小于MySQL。 MAX() 支持,存在差异 GaussDB中指定DISTINCT且SQL语句包含GROUP BY子句时,不对结果进行排序,MySQL会进行排序。当参数为非表字段时,MAX函数返回值类型和MySQL 5.7不一致。 MIN() 支持,存在差异
838:59:59.000000,与MySQL一致。对于超过范围的值,GaussDB在宽松模式下执行SELECT、INSERT、UPDATE等DML操作时,返回的值都是就近的边界值:-838:59:59或838:59:59。MySQL是查询时报错,DML操作返回的值才是就近边界值,场景上存在差异。
SQL兼容性概述 GaussDB数据库兼容绝大多数MySQL语法,但存在部分差异。本章节介绍GaussDB数据库当前支持的MySQL语法。 部分关键字在MySQL可以做标识符但在M-Compatibility不可以或存在限制,如表1所示。 表1 受限标识符列表 关键字类型 关键字
无论参数的数据类型如何,concat返回值的数据类型始终为text;MySQL的concat在含有二进制类型参数时,返回值为二进制类型。 CONCAT_WS() 支持,存在差异 无论参数的数据类型如何,concat_ws返回值的数据类型始终为text;MySQL的concat_ws在含有二进
不支持)。 ORDER BY子句排序时NULL值的排序不同: MySQL中,NULL值默认升序排在前面。 GaussDB中,NULL值默认升序排在后面。 二进制字符串显示不同: MySQL中,会显示二进制字符串编码成16进制后的编码值(例如'-4'会显示成编码后的0x2D34)。
值(小数点后的值)末尾0都不显示;MySQL会显示。GaussDB只支持输入[0,6]范围内的整型值,作为返回时间的精度,超过6的整型值,会告警并按照精度6输出时间值;MySQL的精度值有效值是[0,6],但是输入的整型值内部会对256求余(例257,会返回精度1的时间值)。 CURTIME()
模式字符串pat非法入参,只存在右单括号“)”时,GaussDB会报错,MySQL 5.7会报错,MySQL 8.0不会报错。 在de|abc匹配序列de或abc的匹配规则,当|左右存在空值时,GaussDB不会报错,MySQL 5.7会报错,MySQL 8.0不会报错。 制表符“\t”正则匹配字符类[:blank:],GaussDB可匹配,MySQL
db_mysql=# SET @`\`` = 1; db_mysql`# 形如set @var_name1 = @var_name2 := @var_name3 = @var_name4 := expr; 连续赋值,MySQL支持,GaussDB不支持。 db_mysql=# set
char(0))将空串转成char(0)类型。MySQL支持按长度转成对应的类型。 操作符 GaussDB能正常转成浮点型的字符串与整型值进行加、减、乘、除、求余计算,返回值是整型值,MySQL是返回浮点型。 GaussDB除以0会报错,MySQL返回null。 “~”:GaussDB返回负数,MySQL返回8字节无符号整数。
M-Compatibility模式下,系统函数存在以下公共差异: 系统函数的返回值类型仅考虑入参node类型为Var(表中数据)和Const(常量输入)类型时的情况与MySQL保持一致,其他情况(如入参为运算表达式、函数表达式等)可能返回值的类型与MySQL有差异。 系统函数在涉及LIMIT与OFFSET同时
RING或TIME其中一个时,GaussDB输出为TEXT类型,MySQL输出为VARCHAR类型。 两个入参类型其中一个为FLOAT4类型另一个为numeric范畴中任一类型,返回值为DOUBLE类型。MySQL其中一入参为FLOAT4,另一入参为TINYINT、UNSIGNED
执行结果为true,与MySQL结果相反:根据规则选定的公共类型为int类型,因此将左表达式'1970-01-01'转换为int类型与列表中的表达式转换为int类型后的值依次比较。 -- '1970-01-01'和'1970-01-02'转换为int类型时都为1970(兼容MySQL模式下,转
型时行为存在差异: MySQL 5.7中,AVG(TEXT/BLOB)返回值类型为MEDIUMTEXT类型;MySQL 8.0中,AVG(TEXT/BLOB)返回值类型为DOUBLE类型。 在GaussDB中,AVG(TEXT/BLOB)返回值类型与MySQL 8.0版本保持一致。
JSON数据类型 MySQL数据库 GaussDB数据库 差异 JSON 支持,存在差异 GaussDB数据库MySQL兼容性B模式中的JSON类型与GaussDB数据库原生的JSON类型行为一致,与MySQL行为差异较大,此处不再逐个列出。 GaussDB数据库MySQL兼容性B模式
用。 utf8mb4字符集下默认字符序为utf8mb4_general_ci,与MySQL 5.7保持一致。 GaussDB中utf8和utf8mb4为同一个字符集。 表1 排序规则列表 MySQL数据库 GaussDB数据库 utf8mb4_general_ci 支持 utf8mb4_unicode_ci
utf8mb4字符集下默认字符序为utf8mb4_general_ci,与MySQL 5.7保持一致。 使用latin1字符序需要设置兼容性参数m_format_dev_version = 's2'。 表1 排序规则列表 MySQL数据库 GaussDB数据库 utf8mb4_general_ci