Compatibilité ANSI SQL du dialecte CLICKHOUSE SQL 

Différences de comportement 

Le tableau suivant répertorie les cas où la fonctionnalité de requête fonctionne dans ClickHouse, mais ne se comporte pas comme spécifié dans ANSI SQL.

Feature ID Nom De La Fonctionnalité Différence
E011 Types de données numériques Le littéral numérique avec période est interprété comme approximatif (Float64) au lieu de exact (Decimal)
E051-05 Les éléments sélectionnés peuvent être renommés Les renommages d'élément ont une portée de visibilité plus large que le simple résultat de sélection
E141-01 Contraintes non nulles NOT NULL est implicite pour les colonnes de table par défaut
E011-04 Opérateurs arithmétiques Clickhouse déborde au lieu de l'arithmétique vérifiée et modifie le type de données de résultat en fonction des règles personnalisées

Fonction D'État 

Feature ID Nom De La Fonctionnalité Statut Commentaire
E011 Types de données numériques Partiel
E011-01 Types de données INTEGER et SMALLINT Oui
E011-02 Types de données réel, double précision et flottant types de données Partiel FLOAT(<binary_precision>), REAL et DOUBLE PRECISION ne sont pas pris en charge
E011-03 Types de données décimales et numériques Partiel Seulement DECIMAL(p,s) est pris en charge, pas NUMERIC
E011-04 Opérateurs arithmétiques Oui
E011-05 Comparaison numérique Oui
E011-06 Casting implicite parmi les types de données numériques Aucun ANSI SQL permet la distribution implicite arbitraire entre les types numériques, tandis que ClickHouse repose sur des fonctions ayant plusieurs surcharges au lieu de la distribution implicite
E021 Types de chaînes de caractères Partiel
E021-01 Type de données CARACTÈRE Aucun
E021-02 TYPE DE DONNÉES variable de caractère Aucun String se comporte de la même manière, mais sans limite de longueur entre parenthèses
E021-03 Littéraux de caractères Partiel Aucune concaténation automatique de littéraux consécutifs et prise en charge du jeu de caractères
E021-04 Fonction CHARACTER_LENGTH Partiel Aucun USING clause
E021-05 Fonction OCTET_LENGTH Aucun LENGTH se comporte de la même façon
E021-06 SUBSTRING Partiel Pas de support pour SIMILAR et ESCAPE clauses, pas de SUBSTRING_REGEX variante
E021-07 Concaténation de caractères Partiel Aucun COLLATE clause
E021-08 Fonctions supérieures et inférieures Oui
E021-09 La fonction TRIM Oui
E021-10 Conversion implicite entre les types de chaînes de caractères de longueur fixe et de longueur variable Aucun ANSI SQL permet la distribution implicite arbitraire entre les types de chaîne, tandis que ClickHouse repose sur des fonctions ayant plusieurs surcharges au lieu de la distribution implicite
E021-11 La POSITION de la fonction Partiel Pas de support pour IN et USING clauses, pas de POSITION_REGEX variante
E021-12 Comparaison de caractères Oui
E031 Identificateur Partiel
E031-01 Identificateurs délimités Partiel Le support littéral Unicode est limité
E031-02 Identificateurs minuscules Oui
E031-03 Fuite de soulignement Oui
E051 Spécification de requête de base Partiel
E051-01 SELECT DISTINCT Oui
E051-02 Groupe par clause Oui
E051-04 GROUP BY peut contenir des colonnes <select list> Oui
E051-05 Les éléments sélectionnés peuvent être renommés Oui
E051-06 Clause HAVING Oui
E051-07 Qualifié * dans la liste select Oui
E051-08 Nom de corrélation dans la clause FROM Oui
E051-09 Renommer les colonnes de la clause FROM Aucun
E061 Prédicats de base et conditions de recherche Partiel
E061-01 Prédicat de comparaison Oui
E061-02 Entre prédicat Partiel Aucun SYMMETRIC et ASYMMETRIC clause
E061-03 Dans le prédicat avec la liste des valeurs Oui
E061-04 Comme prédicat Oui
E061-05 Comme prédicat: clause D'échappement Aucun
E061-06 Prédicat NULL Oui
E061-07 Prédicat de comparaison quantifié Aucun
E061-08 Existe prédicat Aucun
E061-09 Sous-requêtes dans le prédicat de comparaison Oui
E061-11 Sous-requêtes dans dans le prédicat Oui
E061-12 Sous-requêtes dans le prédicat de comparaison quantifiée Aucun
E061-13 Sous-requêtes corrélées Aucun
E061-14 Condition de recherche Oui
E071 Expressions de requête de base Partiel
E071-01 Opérateur de table distinct UNION Aucun
E071-02 Opérateur de table UNION ALL Oui
E071-03 Sauf opérateur de table DISTINCT Aucun
E071-05 Les colonnes combinées via les opérateurs de table n'ont pas besoin d'avoir exactement le même type de données Oui
E071-06 Tableau des opérateurs dans les sous-requêtes Oui
E081 Les privilèges de base Partiel Les travaux en cours
E091 Les fonctions de jeu Oui
E091-01 AVG Oui
E091-02 COUNT Oui
E091-03 MAX Oui
E091-04 MIN Oui
E091-05 SUM Oui
E091-06 TOUS les quantificateurs Aucun
E091-07 Quantificateur DISTINCT Partiel Toutes les fonctions d'agrégation ne sont pas prises en charge
E101 Manipulation des données de base Partiel
E101-01 Insérer une déclaration Oui Remarque: la clé primaire dans ClickHouse n'implique pas UNIQUE contrainte
E101-03 Déclaration de mise à jour recherchée Aucun Il y a un ALTER UPDATE déclaration pour la modification des données de lot
E101-04 Requête de suppression recherchée Aucun Il y a un ALTER DELETE déclaration pour la suppression de données par lots
E111 Instruction SELECT à une ligne Aucun
E121 Prise en charge du curseur de base Aucun
E121-01 DECLARE CURSOR Aucun
E121-02 Les colonnes ORDER BY n'ont pas besoin d'être dans la liste select Aucun
E121-03 Expressions de valeur dans la clause ORDER BY Aucun
E121-04 Instruction OPEN Aucun
E121-06 Déclaration de mise à jour positionnée Aucun
E121-07 Instruction de suppression positionnée Aucun
E121-08 Déclaration de fermeture Aucun
E121-10 Instruction FETCH: implicite suivant Aucun
E121-17 Avec curseurs HOLD Aucun
E131 Support de valeur Null (nulls au lieu de valeurs) Partiel Certaines restrictions s'appliquent
E141 Contraintes d'intégrité de base Partiel
E141-01 Contraintes non nulles Oui Note: NOT NULL est implicite pour les colonnes de table par défaut
E141-02 Contrainte UNIQUE de colonnes non nulles Aucun
E141-03 Contraintes de clé primaire Aucun
E141-04 Contrainte de clé étrangère de base avec la valeur par défaut NO ACTION Pour l'action de suppression référentielle et l'action de mise à jour référentielle Aucun
E141-06 Vérifier la contrainte Oui
E141-07 Colonne par défaut Oui
E141-08 Non NULL déduit sur la clé primaire Oui
E141-10 Les noms dans une clé étrangère peut être spécifié dans n'importe quel ordre Aucun
E151 Support de Transaction Aucun
E151-01 COMMIT déclaration Aucun
E151-02 Déclaration de restauration Aucun
E152 Instruction de transaction set de base Aucun
E152-01 SET TRANSACTION statement: clause sérialisable de niveau D'isolement Aucun
E152-02 SET TRANSACTION statement: clauses en lecture seule et en lecture écriture Aucun
E153 Requêtes pouvant être mises à jour avec des sous requêtes Aucun
E161 Commentaires SQL en utilisant le premier Double moins Oui
E171 Support SQLSTATE Aucun
E182 Liaison du langage hôte Aucun
F031 Manipulation de schéma de base Partiel
F031-01 Instruction CREATE TABLE pour créer des tables de base persistantes Partiel Aucun SYSTEM VERSIONING, ON COMMIT, GLOBAL, LOCAL, PRESERVE, DELETE, REF IS, WITH OPTIONS, UNDER, LIKE, PERIOD FOR clauses et aucun support pour les types de données résolus par l'utilisateur
F031-02 Instruction créer une vue Partiel Aucun RECURSIVE, CHECK, UNDER, WITH OPTIONS clauses et aucun support pour les types de données résolus par l'utilisateur
F031-03 Déclaration de subvention Oui
F031-04 ALTER TABLE statement: ajouter une clause de colonne Partiel Pas de support pour GENERATED clause et période de temps du système
F031-13 Instruction DROP TABLE: clause RESTRICT Aucun
F031-16 Instruction DROP VIEW: clause RESTRICT Aucun
F031-19 REVOKE statement: clause RESTRICT Aucun
F041 Table jointe de base Partiel
F041-01 INNER join (mais pas nécessairement le mot-clé INNER) Oui
F041-02 INTÉRIEURE mot-clé Oui
F041-03 LEFT OUTER JOIN Oui
F041-04 RIGHT OUTER JOIN Oui
F041-05 Les jointures externes peuvent être imbriqués Oui
F041-07 La table intérieure dans une jointure extérieure gauche ou droite peut également être utilisée dans une jointure intérieure Oui
F041-08 Tous les opérateurs de comparaison sont pris en charge (plutôt que juste =) Aucun
F051 Date et heure de base Partiel
F051-01 Type de données de DATE (y compris la prise en charge du littéral de DATE) Partiel Aucun littéral
F051-02 TYPE DE DONNÉES DE TEMPS (y compris la prise en charge du littéral de temps) avec une précision de secondes fractionnaires d'au moins 0 Aucun
F051-03 Type de données D'horodatage (y compris la prise en charge du littéral D'horodatage) avec une précision de secondes fractionnaires d'au moins 0 et 6 Aucun DateTime64 temps fournit des fonctionnalités similaires
F051-04 Prédicat de comparaison sur les types de données DATE, heure et horodatage Partiel Un seul type de données disponible
F051-05 Distribution explicite entre les types datetime et les types de chaînes de caractères Oui
F051-06 CURRENT_DATE Aucun today() est similaire
F051-07 LOCALTIME Aucun now() est similaire
F051-08 LOCALTIMESTAMP Aucun
F081 UNION et sauf dans les vues Partiel
F131 Groupées des opérations Partiel
F131-01 WHERE, GROUP BY et ayant des clauses prises en charge dans les requêtes avec des vues groupées Oui
F131-02 Plusieurs tables prises en charge dans les requêtes avec des vues groupées Oui
F131-03 Définir les fonctions prises en charge dans les requêtes groupées vues Oui
F131-04 Sous requêtes avec des clauses GROUP BY et HAVING et des vues groupées Oui
F131-05 Sélectionnez une seule ligne avec des clauses GROUP BY et HAVING et des vues groupées Aucun
F181 Support de module Multiple Aucun
F201 Fonction de distribution Oui
F221 Valeurs par défaut explicites Aucun
F261 Expression de cas Oui
F261-01 Cas Simple Oui
F261-02 Cas recherché Oui
F261-03 NULLIF Oui
F261-04 COALESCE Oui
F311 Déclaration de définition de schéma Partiel
F311-01 CREATE SCHEMA Aucun
F311-02 Créer une TABLE pour les tables de base persistantes Oui
F311-03 CREATE VIEW Oui
F311-04 CREATE VIEW: WITH CHECK OPTION Aucun
F311-05 Déclaration de subvention Oui
F471 Valeurs de sous-requête scalaire Oui
F481 Prédicat null étendu Oui
F812 Base de repérage Aucun
T321 Routines SQL-invoked de base Aucun
T321-01 Fonctions définies par l'utilisateur sans surcharge Aucun
T321-02 Procédures stockées définies par l'utilisateur sans surcharge Aucun
T321-03 L'invocation de la fonction Aucun
T321-04 L'instruction d'APPEL de Aucun
T321-05 Déclaration de retour Aucun
T631 Dans le prédicat avec un élément de liste Oui

Rating: 5 - 6 votes

Was this content helpful?
★★★★★