Ansi Sql兼容性的ClickHouse SQL方言 

行为差异 

下表列出了查询功能在ClickHouse中工作但行为不符合ANSI SQL中指定的情况。

Feature ID 功能名称 差异
E011 数字数据类型 带句点的数值文字被解释为近似值 (Float64)而不是确切的 (Decimal)
E051-05 选择项目可以重命名 项目重命名具有比仅选择结果更广泛的可见性范围
E141-01 非空约束 NOT NULL 默认情况下,表列隐含
E011-04 算术运算符 ClickHouse溢出而不是检查算法,并根据自定义规则更改结果数据类型

功能状态 

Feature ID 功能名称 状态 评论
E011 数字数据类型 部分
E011-01 整型和小型数据类型
E011-02 真实、双精度和浮点数据类型数据类型 部分 FLOAT(<binary_precision>), REALDOUBLE PRECISION 不支持
E011-03 十进制和数值数据类型 部分 只有 DECIMAL(p,s) 支持,而不是 NUMERIC
E011-04 算术运算符
E011-05 数字比较
E011-06 数字数据类型之间的隐式转换 非也。 ANSI SQL允许在数值类型之间进行任意隐式转换,而ClickHouse依赖于具有多个重载的函数而不是隐式转换
E021 字符串类型 部分
E021-01 字符数据类型 非也。
E021-02 字符变化数据类型 非也。 String 行为类似,但括号中没有长度限制
E021-03 字符文字 部分 不自动连接连续文字和字符集支持
E021-04 字符长度函数 部分 非也。 USING 条款
E021-05 OCTET_LENGTH函数 非也。 LENGTH 表现类似
E021-06 SUBSTRING 部分 不支持 SIMILARESCAPE 条款,否 SUBSTRING_REGEX 备选案文
E021-07 字符串联 部分 非也。 COLLATE 条款
E021-08 上下功能
E021-09 修剪功能
E021-10 固定长度和可变长度字符串类型之间的隐式转换 非也。 ANSI SQL允许在字符串类型之间进行任意隐式转换,而ClickHouse依赖于具有多个重载的函数而不是隐式转换
E021-11 职位功能 部分 不支持 INUSING 条款,否 POSITION_REGEX 备选案文
E021-12 字符比较
E031 标识符 部分
E031-01 分隔标识符 部分 Unicode文字支持有限
E031-02 小写标识符
E031-03 尾部下划线
E051 基本查询规范 部分
E051-01 SELECT DISTINCT
E051-02 GROUP BY子句
E051-04 分组依据可以包含不在列 <select list>
E051-05 选择项目可以重命名
E051-06 有条款
E051-07 合格*在选择列表中
E051-08 FROM子句中的关联名称
E051-09 重命名FROM子句中的列 非也。
E061 基本谓词和搜索条件 部分
E061-01 比较谓词
E061-02 谓词之间 部分 非也。 SYMMETRICASYMMETRIC 条款
E061-03 在具有值列表的谓词中
E061-04 像谓词
E061-05 LIKE谓词:逃避条款 非也。
E061-06 空谓词
E061-07 量化比较谓词 非也。
E061-08 存在谓词 非也。
E061-09 比较谓词中的子查询
E061-11 谓词中的子查询
E061-12 量化比较谓词中的子查询 非也。
E061-13 相关子查询 非也。
E061-14 搜索条件
E071 基本查询表达式 部分
E071-01 UNION DISTINCT table运算符 非也。
E071-02 联合所有表运算符
E071-03 除了不同的表运算符 非也。
E071-05 通过表运算符组合的列不必具有完全相同的数据类型
E071-06 子查询中的表运算符
E081 基本特权 部分 正在进行的工作
E091 设置函数
E091-01 AVG
E091-02 COUNT
E091-03 MAX
E091-04 MIN
E091-05 SUM
E091-06 全部量词 非也。
E091-07 不同的量词 部分 并非所有聚合函数都受支持
E101 基本数据操作 部分
E101-01 插入语句 注:ClickHouse中的主键并不意味着 UNIQUE 约束
E101-03 搜索更新语句 非也。 有一个 ALTER UPDATE 批量数据修改语句
E101-04 搜索的删除语句 非也。 有一个 ALTER DELETE 批量数据删除声明
E111 单行SELECT语句 非也。
E121 基本光标支持 非也。
E121-01 DECLARE CURSOR 非也。
E121-02 按列排序不需要在选择列表中 非也。
E121-03 按顺序排列的值表达式 非也。
E121-04 公开声明 非也。
E121-06 定位更新语句 非也。
E121-07 定位删除语句 非也。
E121-08 关闭声明 非也。
E121-10 FETCH语句:隐式NEXT 非也。
E121-17 使用保持游标 非也。
E131 空值支持(空值代替值) 部分 一些限制适用
E141 基本完整性约束 部分
E141-01 非空约束 注: NOT NULL 默认情况下,表列隐含
E141-02 非空列的唯一约束 非也。
E141-03 主键约束 非也。
E141-04 对于引用删除操作和引用更新操作,具有默认无操作的基本外键约束 非也。
E141-06 检查约束
E141-07 列默认值
E141-08 在主键上推断为非NULL
E141-10 可以按任何顺序指定外键中的名称 非也。
E151 交易支持 非也。
E151-01 提交语句 非也。
E151-02 回滚语句 非也。
E152 基本设置事务语句 非也。
E152-01 SET TRANSACTION语句:隔离级别SERIALIZABLE子句 非也。
E152-02 SET TRANSACTION语句:只读和读写子句 非也。
E153 具有子查询的可更新查询 非也。
E161 SQL注释使用前导双减
E171 SQLSTATE支持 非也。
E182 主机语言绑定 非也。
F031 基本架构操作 部分
F031-01 CREATE TABLE语句创建持久基表 部分 非也。 SYSTEM VERSIONING, ON COMMIT, GLOBAL, LOCAL, PRESERVE, DELETE, REF IS, WITH OPTIONS, UNDER, LIKE, PERIOD FOR 子句,不支持用户解析的数据类型
F031-02 创建视图语句 部分 非也。 RECURSIVE, CHECK, UNDER, WITH OPTIONS 子句,不支持用户解析的数据类型
F031-03 赠款声明
F031-04 ALTER TABLE语句:ADD COLUMN子句 部分 不支持 GENERATED 条款和系统时间段
F031-13 DROP TABLE语句:RESTRICT子句 非也。
F031-16 DROP VIEW语句:RESTRICT子句 非也。
F031-19 REVOKE语句:RESTRICT子句 非也。
F041 基本连接表 部分
F041-01 Inner join(但不一定是INNER关键字)
F041-02 内部关键字
F041-03 LEFT OUTER JOIN
F041-04 RIGHT OUTER JOIN
F041-05 可以嵌套外部连接
F041-07 左侧或右侧外部联接中的内部表也可用于内部联接
F041-08 支持所有比较运算符(而不仅仅是=) 非也。
F051 基本日期和时间 部分
F051-01 日期数据类型(包括对日期文字的支持) 部分 没有文字
F051-02 时间数据类型(包括对时间文字的支持),秒小数精度至少为0 非也。
F051-03 时间戳数据类型(包括对时间戳文字的支持),小数秒精度至少为0和6 非也。 DateTime64 时间提供了类似的功能
F051-04 日期、时间和时间戳数据类型的比较谓词 部分 只有一种数据类型可用
F051-05 Datetime类型和字符串类型之间的显式转换
F051-06 CURRENT_DATE 非也。 today() 是相似的
F051-07 LOCALTIME 非也。 now() 是相似的
F051-08 LOCALTIMESTAMP 非也。
F081 联盟和视图除外 部分
F131 分组操作 部分
F131-01 WHERE、GROUP BY和HAVING子句在具有分组视图的查询中受支持
F131-02 具有分组视图的查询中支持的多个表
F131-03 设置具有分组视图的查询中支持的函数
F131-04 具有分组依据和具有子句和分组视图的子查询
F131-05 单行选择具有GROUP BY和具有子句和分组视图 非也。
F181 多模块支持 非也。
F201 投函数
F221 显式默认值 非也。
F261 案例表达式
F261-01 简单案例
F261-02 检索案例
F261-03 NULLIF
F261-04 COALESCE
F311 架构定义语句 部分
F311-01 CREATE SCHEMA 非也。
F311-02 为持久基表创建表
F311-03 CREATE VIEW
F311-04 CREATE VIEW: WITH CHECK OPTION 非也。
F311-05 赠款声明
F471 标量子查询值
F481 扩展空谓词
F812 基本标记 非也。
T321 基本的SQL调用例程 非也。
T321-01 无重载的用户定义函数 非也。
T321-02 无重载的用户定义存储过程 非也。
T321-03 函数调用 非也。
T321-04 电话声明 非也。
T321-05 退货声明 非也。
T631 在一个列表元素的谓词中

Rating: 5 - 6 votes

Was this content helpful?
★★★★★