Help wanted!

The following content of this documentation page has been machine-translated. But unlike other websites, it is not done on the fly. This translated text lives on GitHub repository alongside main ClickHouse codebase and waits for fellow native speakers to make it more human-readable. You can also use the original English version as a reference.

Help ClickHouse documentation by editing this page

Ansi Sql兼容性的ClickHouse SQL方言

本文依赖于表38, “Feature taxonomy and definition for mandatory features”, Annex F of ISO/IEC CD 9075-2:2013.

行为差异

下表列出了查询功能在ClickHouse中有效但不符合ANSI SQL标准的情况。

Feature ID功能名称差异
E011数值(Numeric)数据类型带小数点的数值文字被解释为近似值 (Float64)而不是精确值 (Decimal)
E051-05SELECT字段可以重命名字段不仅仅在SELECT结果中可被重命名
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-05OCTET_LENGTH函数非也。LENGTH 表现类似
E021-06SUBSTRING部分不支持 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-01SELECT DISTINCT
E051-02GROUP BY子句
E051-04分组依据可以包含不在列 <select list>
E051-05选择项目可以重命名
E051-06有条款
E051-07合格*在选择列表中
E051-08FROM子句中的关联名称
E051-09重命名FROM子句中的列否。
E061基本谓词和搜索条件部分
E061-01比较谓词
E061-02谓词之间部分非也。 SYMMETRICASYMMETRIC 条款
E061-03在具有值列表的谓词中
E061-04像谓词
E061-05LIKE谓词:逃避条款否。
E061-06空谓词
E061-07量化比较谓词非也。
E061-08存在谓词非也。
E061-09比较谓词中的子查询
E061-11谓词中的子查询
E061-12量化比较谓词中的子查询否。
E061-13相关子查询否。
E061-14搜索条件
E071基本查询表达式部分
E071-01UNION DISTINCT table运算符否。
E071-02联合所有表运算符
E071-03除了不同的表运算符非也。
E071-05通过表运算符组合的列不必具有完全相同的数据类型
E071-06子查询中的表运算符
E081基本特权部分正在进行的工作
E091设置函数
E091-01AVG
E091-02COUNT
E091-03MAX
E091-04MIN
E091-05SUM
E091-06全部量词否。
E091-07不同的量词部分并非所有聚合函数都受支持
E101基本数据操作部分
E101-01插入语句注:ClickHouse中的主键并不意味着 UNIQUE 约束
E101-03搜索更新语句否。有一个 ALTER UPDATE 批量数据修改语句
E101-04搜索的删除语句否。有一个 ALTER DELETE 批量数据删除声明
E111单行SELECT语句否。
E121基本光标支持否。
E121-01DECLARE CURSOR否。
E121-02按列排序不需要在选择列表中否。
E121-03按顺序排列的值表达式否。
E121-04公开声明否。
E121-06定位更新语句否。
E121-07定位删除语句否。
E121-08关闭声明否。
E121-10FETCH语句:隐式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-01SET TRANSACTION语句:隔离级别SERIALIZABLE子句否。
E152-02SET TRANSACTION语句:只读和读写子句否。
E153具有子查询的可更新查询否。
E161SQL注释使用前导双减
E171SQLSTATE支持否。
E182主机语言绑定否。
F031基本架构操作部分
F031-01CREATE 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-04ALTER TABLE语句:ADD COLUMN子句部分不支持 GENERATED 条款和系统时间段
F031-13DROP TABLE语句:RESTRICT子句否。
F031-16DROP VIEW语句:RESTRICT子句否。
F031-19REVOKE语句:RESTRICT子句否。
F041基本连接表部分
F041-01Inner join(但不一定是INNER关键字)
F041-02内部关键字
F041-03LEFT OUTER JOIN
F041-04RIGHT OUTER JOIN
F041-05可以嵌套外部连接
F041-07左侧或右侧外部联接中的内部表也可用于内部联接
F041-08支持所有比较运算符(而不仅仅是=)否。
F051基本日期和时间部分
F051-01日期数据类型(包括对日期文字的支持)部分没有文字
F051-02时间数据类型(包括对时间文字的支持),秒小数精度至少为0否。
F051-03时间戳数据类型(包括对时间戳文字的支持),小数秒精度至少为0和6否。DateTime64 时间提供了类似的功能
F051-04日期、时间和时间戳数据类型的比较谓词部分只有一种数据类型可用
F051-05Datetime类型和字符串类型之间的显式转换
F051-06CURRENT_DATE否。today() 是相似的
F051-07LOCALTIME否。now() 是相似的
F051-08LOCALTIMESTAMP否。
F081联盟和视图除外部分
F131分组操作部分
F131-01WHERE、GROUP BY和HAVING子句在具有分组视图的查询中受支持
F131-02具有分组视图的查询中支持的多个表
F131-03设置具有分组视图的查询中支持的函数
F131-04具有分组依据和具有子句和分组视图的子查询
F131-05单行选择具有GROUP BY和具有子句和分组视图非也。
F181多模块支持否。
F201投函数
F221显式默认值否。
F261案例表达式
F261-01简单案例
F261-02检索案例
F261-03NULLIF
F261-04COALESCE
F311架构定义语句部分
F311-01CREATE SCHEMA否。
F311-02为持久基表创建表
F311-03CREATE VIEW
F311-04CREATE VIEW: WITH CHECK OPTION否。
F311-05赠款声明
F471标量子查询值
F481扩展空谓词
F812基本标记否。
T321基本的SQL调用例程否。
T321-01无重载的用户定义函数否。
T321-02无重载的用户定义存储过程否。
T321-03函数调用否。
T321-04电话声明否。
T321-05退货声明否。
T631在一个列表元素的谓词中