Compatibilidad de SQL ANSI de ClickHouse SQL Dialect 

Diferencias en el comportamiento 

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.

Feature ID Nombre de la función Diferencia
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 ID Nombre de la función Estatus Comentario
E011 Tipos de datos numéricos Parcial
E011-01 Tipos de datos INTEGER y SMALLINT
E011-02 REAL, DOUBLE PRECISION y FLOAT tipos de datos tipos de datos Parcial FLOAT(<binary_precision>), REAL y DOUBLE PRECISION no son compatibles
E011-03 Tipos de datos DECIMAL y NUMERIC Parcial Solo DECIMAL(p,s) es compatible, no NUMERIC
E011-04 Operadores aritméticos
E011-05 Comparación numérica
E011-06 Conversión implícita entre los tipos de datos numéricos No 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
E021-01 Tipo de datos CHARACTER No
E021-02 Tipo de datos CHARACTER VARYING No String se comporta de manera similar, pero sin límite de longitud entre paréntesis
E021-03 Literales de caracteres Parcial Sin concatenación automática de literales consecutivos y compatibilidad con el conjunto de caracteres
E021-04 Función CHARACTER_LENGTH Parcial No USING clausula
E021-05 Función OCTET_LENGTH No LENGTH se comporta de manera similar
E021-06 SUBSTRING Parcial No hay soporte para SIMILAR y ESCAPE cláusulas, no SUBSTRING_REGEX variante
E021-07 Concatenación de caracteres Parcial No COLLATE clausula
E021-08 Funciones SUPERIOR e INFERIOR
E021-09 Función TRIM
E021-10 Conversión implícita entre los tipos de cadena de caracteres de longitud fija y longitud variable No 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 No hay soporte para IN y USING cláusulas, no POSITION_REGEX variante
E021-12 Comparación de caracteres
E031 Identificador Parcial
E031-01 Identificadores delimitados Parcial El soporte literal Unicode es limitado
E031-02 Identificadores de minúsculas
E031-03 Trailing subrayado
E051 Especificación básica de la consulta Parcial
E051-01 SELECT DISTINCT
E051-02 Cláusula GROUP BY
E051-04 GROUP BY puede contener columnas que no estén en <select list>
E051-05 Los elementos seleccionados pueden ser renombrados
E051-06 Cláusula HAVING
E051-07 Calificado * en la lista de selección
E051-08 Nombre de correlación en la cláusula FROM
E051-09 Cambiar el nombre de las columnas en la cláusula FROM No
E061 Predicados básicos y condiciones de búsqueda Parcial
E061-01 Predicado de comparación
E061-02 ENTRE predicado Parcial No SYMMETRIC y ASYMMETRIC clausula
E061-03 Predicado IN con lista de valores
E061-04 COMO predicado
E061-05 Predicado LIKE: cláusula ESCAPE No
E061-06 Predicado NULL
E061-07 Predicado de comparación cuantificado No
E061-08 Predicado EXISTS No
E061-09 Subconsultas en predicado de comparación
E061-11 Subconsultas en el predicado IN
E061-12 Subconsultas en predicado de comparación cuantificado No
E061-13 Subconsultas correlacionadas No
E061-14 Condición de búsqueda
E071 Expresiones de consulta básicas Parcial
E071-01 Operador de tabla UNION DISTINCT No
E071-02 Operador de tabla UNION ALL
E071-03 EXCEPTO operador de tabla DISTINCT No
E071-05 Las columnas combinadas a través de operadores de tabla no necesitan tener exactamente el mismo tipo de datos
E071-06 Operadores de tabla en subconsultas
E081 Privilegios básicos Parcial Trabajo en curso
E091 Establecer funciones
E091-01 AVG
E091-02 COUNT
E091-03 MAX
E091-04 MIN
E091-05 SUM
E091-06 Cuantificador ALL No
E091-07 Cuantificador DISTINCT Parcial No se admiten todas las funciones agregadas
E101 Manipulación de datos básicos Parcial
E101-01 Instrucción INSERT Nota: la clave principal en ClickHouse no implica el UNIQUE limitación
E101-03 Instrucción UPDATE buscada No Hay una ALTER UPDATE declaración para la modificación de datos por lotes
E101-04 Instrucción DELETE buscada No Hay una ALTER DELETE declaración para la eliminación de datos por lotes
E111 Instrucción SELECT de una sola fila No
E121 Soporte básico del cursor No
E121-01 DECLARE CURSOR No
E121-02 Las columnas PEDIR POR no necesitan estar en la lista de selección No
E121-03 Expresiones de valor en la cláusula ORDER BY No
E121-04 Declaración ABIERTA No
E121-06 Instrucción UPDATE posicionada No
E121-07 Instrucción DELETE posicionada No
E121-08 Declaración CERRAR No
E121-10 Declaración FETCH: implícita NEXT No
E121-17 CON Cursores HOLD No
E131 Soporte de valor nulo (nulos en lugar de valores) Parcial Se aplican algunas restricciones
E141 Restricciones de integridad básicas Parcial
E141-01 Restricciones NOT NULL Nota: NOT NULL está implícito para las columnas de tabla de forma predeterminada
E141-02 Restricción UNIQUE de columnas NOT NULL No
E141-03 Restricciones PRIMARY KEY No
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
E141-06 Restricción CHECK
E141-07 Valores predeterminados de columna
E141-08 NO NULL inferido en CLAVE PRIMARIA
E141-10 Los nombres de una clave externa se pueden especificar en cualquier orden No
E151 Soporte de transacciones No
E151-01 Declaración COMMIT No
E151-02 Instrucción ROLLBACK No
E152 Instrucción SET TRANSACTION básica No
E152-01 Instrucción SET TRANSACTION: cláusula ISOLATION LEVEL SERIALIZABLE No
E152-02 Instrucción SET TRANSACTION: cláusulas READ ONLY y READ WRITE No
E153 Consultas actualizables con subconsultas No
E161 Comentarios SQL usando doble menos inicial
E171 Soporte SQLSTATE No
E182 Enlace de idioma de host No
F031 Manipulación básica del esquema Parcial
F031-01 Instrucción CREATE TABLE para crear tablas base persistentes Parcial 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 No RECURSIVE, CHECK, UNDER, WITH OPTIONS cláusulas y sin soporte para tipos de datos resueltos por el usuario
F031-03 Declaración GRANT
F031-04 Sentencia ALTER TABLE: cláusula ADD COLUMN Parcial No hay soporte para GENERATED cláusula y período de tiempo del sistema
F031-13 Instrucción DROP TABLE: cláusula RESTRICT No
F031-16 Instrucción DROP VIEW: cláusula RESTRICT No
F031-19 Declaración REVOKE: cláusula RESTRICT No
F041 Tabla unida básica Parcial
F041-01 Unión interna (pero no necesariamente la palabra clave INNER)
F041-02 Palabra clave INTERNA
F041-03 LEFT OUTER JOIN
F041-04 RIGHT OUTER JOIN
F041-05 Las uniones externas se pueden anidar
F041-07 La tabla interna en una combinación externa izquierda o derecha también se puede usar en una combinación interna
F041-08 Todos los operadores de comparación son compatibles (en lugar de solo =) No
F051 Fecha y hora básicas Parcial
F051-01 Tipo de datos DATE (incluido el soporte del literal DATE) Parcial 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
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 DateTime64 tiempo proporciona una funcionalidad similar
F051-04 Predicado de comparación en los tipos de datos DATE, TIME y TIMESTAMP Parcial Sólo un tipo de datos disponible
F051-05 CAST explícito entre tipos de fecha y hora y tipos de cadena de caracteres
F051-06 CURRENT_DATE No today() es similar
F051-07 LOCALTIME No now() es similar
F051-08 LOCALTIMESTAMP No
F081 UNIÓN y EXCEPTO en vistas Parcial
F131 Operaciones agrupadas Parcial
F131-01 Cláusulas WHERE, GROUP BY y HAVING admitidas en consultas con vistas agrupadas
F131-02 Múltiples tablas admitidas en consultas con vistas agrupadas
F131-03 Establecer funciones admitidas en consultas con vistas agrupadas
F131-04 Subconsultas con cláusulas GROUP BY y HAVING y vistas agrupadas
F131-05 SELECCIONAR una sola fila con cláusulas GROUP BY y HAVING y vistas agrupadas No
F181 Múltiples módulos de apoyo No
F201 Función de fundición
F221 Valores predeterminados explícitos No
F261 Expresión CASE
F261-01 Caso simple
F261-02 CASO buscado
F261-03 NULLIF
F261-04 COALESCE
F311 Instrucción de definición de esquema Parcial
F311-01 CREATE SCHEMA No
F311-02 CREATE TABLE para tablas base persistentes
F311-03 CREATE VIEW
F311-04 CREATE VIEW: WITH CHECK OPTION No
F311-05 Declaración GRANT
F471 Valores escalares de la subconsulta
F481 Predicado NULL expandido
F812 Marcado básico No
T321 Rutinas básicas invocadas por SQL No
T321-01 Funciones definidas por el usuario sin sobrecarga No
T321-02 Procedimientos almacenados definidos por el usuario sin sobrecarga No
T321-03 Invocación de función No
T321-04 Declaración de LLAMADA No
T321-05 Declaración DEVOLUCIÓN No
T631 Predicado IN con un elemento de lista

Rating: 5 - 6 votes

Was this content helpful?
★★★★★