# Compatibilidad de SQL ANSI de ClickHouse SQL Dialect {#ansi-sql-compatibility-of-clickhouse-sql-dialect}
!!! note "Nota"
Este artículo se basa en la Tabla 38, “Feature taxonomy and definition for mandatory features”, AnnexF of ISO/IECCD9075-2:2013.
## Diferencias en el comportamiento {#differences-in-behaviour}
En la tabla siguiente se enumeran los casos en que la característica de consulta funciona en ClickHouse, pero no se comporta como se especifica en ANSI SQL.
| E011 | Tipos de datos numéricos | El literal numérico con punto se interpreta como aproximado (`Float64`) en lugar de exacta (`Decimal`) |
| E051-05 | Los elementos seleccionados pueden ser renombrados | Los cambios de nombre de los elementos tienen un alcance de visibilidad más amplio que solo el resultado SELECT |
| E141-01 | Restricciones NOT NULL | `NOT NULL` está implícito para las columnas de tabla de forma predeterminada |
| E011-04 | Operadores aritméticos | ClickHouse se desborda en lugar de la aritmética comprobada y cambia el tipo de datos de resultado en función de las reglas personalizadas |
## Estado de la función {#feature-status}
| FeatureID | Nombre de la función | Estatus | Comentario |
| **E011** | **Tipos de datos numéricos** | **Parcial**{.text-warning} | |
| E011-01 | Tipos de datos INTEGER y SMALLINT | Sí{.text-success} | |
| E011-02 | REAL, DOUBLE PRECISION y FLOAT tipos de datos tipos de datos | Parcial{.text-warning} | `FLOAT(<binary_precision>)`, `REAL` y `DOUBLE PRECISION` no son compatibles |
| E011-03 | Tipos de datos DECIMAL y NUMERIC | Parcial{.text-warning} | Solo `DECIMAL(p,s)` es compatible, no `NUMERIC` |
| E011-06 | Conversión implícita entre los tipos de datos numéricos | No{.text-danger} | ANSI SQL permite la conversión implícita arbitraria entre tipos numéricos, mientras que ClickHouse se basa en funciones que tienen múltiples sobrecargas en lugar de conversión implícita |
| **E021** | **Tipos de cadena de caracteres** | **Parcial**{.text-warning} | |
| E021-01 | Tipo de datos CHARACTER | No{.text-danger} | |
| E021-02 | Tipo de datos CHARACTER VARYING | No{.text-danger} | `String` se comporta de manera similar, pero sin límite de longitud entre paréntesis |
| E021-03 | Literales de caracteres | Parcial{.text-warning} | Sin concatenación automática de literales consecutivos y compatibilidad con el conjunto de caracteres |
| E021-06 | SUBSTRING | Parcial{.text-warning} | No hay soporte para `SIMILAR` y `ESCAPE` cláusulas, no `SUBSTRING_REGEX` variante |
| E021-07 | Concatenación de caracteres | Parcial{.text-warning} | No `COLLATE` clausula |
| E021-08 | Funciones SUPERIOR e INFERIOR | Sí{.text-success} | |
| E021-09 | Función TRIM | Sí{.text-success} | |
| E021-10 | Conversión implícita entre los tipos de cadena de caracteres de longitud fija y longitud variable | No{.text-danger} | ANSI SQL permite la conversión implícita arbitraria entre tipos de cadena, mientras que ClickHouse se basa en funciones que tienen múltiples sobrecargas en lugar de conversión implícita |
| E021-11 | Función POSITION | Parcial{.text-warning} | No hay soporte para `IN` y `USING` cláusulas, no `POSITION_REGEX` variante |
| E021-12 | Comparación de caracteres | Sí{.text-success} | |
| E141-04 | Restricción básica FOREIGN KEY con el valor predeterminado NO ACTION para la acción de eliminación referencial y la acción de actualización referencial | No{.text-danger} | |
| F031-01 | Instrucción CREATE TABLE para crear tablas base persistentes | Parcial{.text-warning} | No `SYSTEM VERSIONING`, `ON COMMIT`, `GLOBAL`, `LOCAL`, `PRESERVE`, `DELETE`, `REF IS`, `WITH OPTIONS`, `UNDER`, `LIKE`, `PERIOD FOR` cláusulas y sin soporte para tipos de datos resueltos por el usuario |
| F031-02 | Instrucción CREATE VIEW | Parcial{.text-warning} | No `RECURSIVE`, `CHECK`, `UNDER`, `WITH OPTIONS` cláusulas y sin soporte para tipos de datos resueltos por el usuario |
| F031-03 | Declaración GRANT | Sí{.text-success} | |
| F031-04 | Sentencia ALTER TABLE: cláusula ADD COLUMN | Parcial{.text-warning} | No hay soporte para `GENERATED` cláusula y período de tiempo del sistema |
| F041-03 | LEFT OUTER JOIN | Sí{.text-success} | |
| F041-04 | RIGHT OUTER JOIN | Sí{.text-success} | |
| F041-05 | Las uniones externas se pueden anidar | Sí{.text-success} | |
| F041-07 | La tabla interna en una combinación externa izquierda o derecha también se puede usar en una combinación interna | Sí{.text-success} | |
| F041-08 | Todos los operadores de comparación son compatibles (en lugar de solo =) | No{.text-danger} | |
| **F051** | **Fecha y hora básicas** | **Parcial**{.text-warning} | |
| F051-01 | Tipo de datos DATE (incluido el soporte del literal DATE) | Parcial{.text-warning} | No literal |
| F051-02 | Tipo de datos TIME (incluido el soporte del literal TIME) con una precisión de segundos fraccionarios de al menos 0 | No{.text-danger} | |
| F051-03 | Tipo de datos TIMESTAMP (incluido el soporte del literal TIMESTAMP) con una precisión de segundos fraccionarios de al menos 0 y 6 | No{.text-danger} | `DateTime64` tiempo proporciona una funcionalidad similar |
| F051-04 | Predicado de comparación en los tipos de datos DATE, TIME y TIMESTAMP | Parcial{.text-warning} | Sólo un tipo de datos disponible |
| F051-05 | CAST explícito entre tipos de fecha y hora y tipos de cadena de caracteres | Sí{.text-success} | |