--- machine_translated: true machine_translated_rev: ad252bbb4f7e2899c448eb42ecc39ff195c8faa1 toc_priority: 40 toc_title: "ANSI\u517C\u5BB9\u6027" --- # Ansi Sql兼容性的ClickHouse SQL方言 {#ansi-sql-compatibility-of-clickhouse-sql-dialect} !!! note "注" 本文依赖于表38, “Feature taxonomy and definition for mandatory features”, Annex F of ISO/IEC CD 9075-2:2013. ## 行为差异 {#differences-in-behaviour} 下表列出了查询功能在ClickHouse中有效但不符合ANSI SQL标准的情况。 | Feature ID | 功能名称 | 差异 | |------------|--------------------|---------------------------------------------------------------------| | E011 | 数值(Numeric)数据类型 | 带小数点的数值文字被解释为近似值 (`Float64`)而不是精确值 (`Decimal`) | | E051-05 | SELECT字段可以重命名 | 字段不仅仅在SELECT结果中可被重命名 | | E141-01 | 非空约束 | 表中每一列默认为`NOT NULL` | | E011-04 | 算术运算符 | ClickHouse不会检查算法,并根据自定义规则更改结果数据类型,而是会溢出 | ## 功能匹配 {#feature-status} | Feature ID | 功能名称 | 匹配 | 评论 | |------------|----------------------------------------------------------------|--------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | **E011** | **数字数据类型** | **部分**{.text-warning} | | | E011-01 | 整型和小型数据类型 | 是 {.text-success} | | | E011-02 | 真实、双精度和浮点数据类型数据类型 | 部分 {.text-warning} | `FLOAT()`, `REAL` 和 `DOUBLE PRECISION` 不支持 | | E011-03 | 十进制和数值数据类型 | 部分 {.text-warning} | 只有 `DECIMAL(p,s)` 支持,而不是 `NUMERIC` | | E011-04 | 算术运算符 | 是 {.text-success} | | | E011-05 | 数字比较 | 是 {.text-success} | | | E011-06 | 数字数据类型之间的隐式转换 | 否。 {.text-danger} | ANSI SQL允许在数值类型之间进行任意隐式转换,而ClickHouse依赖于具有多个重载的函数而不是隐式转换 | | **E021** | **字符串类型** | **部分**{.text-warning} | | | E021-01 | 字符数据类型 | 否。 {.text-danger} | | | E021-02 | 字符变化数据类型 | 否。 {.text-danger} | `String` 行为类似,但括号中没有长度限制 | | E021-03 | 字符文字 | 部分 {.text-warning} | 不自动连接连续文字和字符集支持 | | E021-04 | 字符长度函数 | 部分 {.text-warning} | 非也。 `USING` 条款 | | E021-05 | OCTET_LENGTH函数 | 非也。 {.text-danger} | `LENGTH` 表现类似 | | E021-06 | SUBSTRING | 部分 {.text-warning} | 不支持 `SIMILAR` 和 `ESCAPE` 条款,否 `SUBSTRING_REGEX` 备选案文 | | E021-07 | 字符串联 | 部分 {.text-warning} | 非也。 `COLLATE` 条款 | | E021-08 | 上下功能 | 是 {.text-success} | | | E021-09 | 修剪功能 | 是 {.text-success} | | | E021-10 | 固定长度和可变长度字符串类型之间的隐式转换 | 否。 {.text-danger} | ANSI SQL允许在字符串类型之间进行任意隐式转换,而ClickHouse依赖于具有多个重载的函数而不是隐式转换 | | E021-11 | 职位功能 | 部分 {.text-warning} | 不支持 `IN` 和 `USING` 条款,否 `POSITION_REGEX` 备选案文 | | E021-12 | 字符比较 | 是 {.text-success} | | | **E031** | **标识符** | **部分**{.text-warning} | | | E031-01 | 分隔标识符 | 部分 {.text-warning} | Unicode文字支持有限 | | E031-02 | 小写标识符 | 是 {.text-success} | | | E031-03 | 尾部下划线 | 是 {.text-success} | | | **E051** | **基本查询规范** | **部分**{.text-warning} | | | E051-01 | SELECT DISTINCT | 是 {.text-success} | | | E051-02 | GROUP BY子句 | 是 {.text-success} | | | E051-04 | 分组依据可以包含不在列 `