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 IDNom De La FonctionnalitéDifférence
E011Types de données numériquesLe littéral numérique avec période est interprété comme approximatif (Float64) au lieu de exact (Decimal)
E051-05Les éléments sélectionnés peuvent être renommésLes renommages d'élément ont une portée de visibilité plus large que le simple résultat de sélection
E141-01Contraintes non nullesNOT NULL est implicite pour les colonnes de table par défaut
E011-04Opérateurs arithmétiquesClickhouse 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 IDNom De La FonctionnalitéStatutCommentaire
E011Types de données numériquesPartiel
E011-01Types de données INTEGER et SMALLINTOui
E011-02Types de données réel, double précision et flottant types de donnéesPartielFLOAT(<binary_precision>), REAL et DOUBLE PRECISION ne sont pas pris en charge
E011-03Types de données décimales et numériquesPartielSeulement DECIMAL(p,s) est pris en charge, pas NUMERIC
E011-04Opérateurs arithmétiquesOui
E011-05Comparaison numériqueOui
E011-06Casting implicite parmi les types de données numériquesAucunANSI 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
E021Types de chaînes de caractèresPartiel
E021-01Type de données CARACTÈREAucun
E021-02TYPE DE DONNÉES variable de caractèreAucunString se comporte de la même manière, mais sans limite de longueur entre parenthèses
E021-03Littéraux de caractèresPartielAucune concaténation automatique de littéraux consécutifs et prise en charge du jeu de caractères
E021-04Fonction CHARACTER_LENGTHPartielAucun USING clause
E021-05Fonction OCTET_LENGTHAucunLENGTH se comporte de la même façon
E021-06SUBSTRINGPartielPas de support pour SIMILAR et ESCAPE clauses, pas de SUBSTRING_REGEX variante
E021-07Concaténation de caractèresPartielAucun COLLATE clause
E021-08Fonctions supérieures et inférieuresOui
E021-09La fonction TRIMOui
E021-10Conversion implicite entre les types de chaînes de caractères de longueur fixe et de longueur variableAucunANSI 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-11La POSITION de la fonctionPartielPas de support pour IN et USING clauses, pas de POSITION_REGEX variante
E021-12Comparaison de caractèresOui
E031IdentificateurPartiel
E031-01Identificateurs délimitésPartielLe support littéral Unicode est limité
E031-02Identificateurs minusculesOui
E031-03Fuite de soulignementOui
E051Spécification de requête de basePartiel
E051-01SELECT DISTINCTOui
E051-02Groupe par clauseOui
E051-04GROUP BY peut contenir des colonnes <select list>Oui
E051-05Les éléments sélectionnés peuvent être renommésOui
E051-06Clause HAVINGOui
E051-07Qualifié * dans la liste selectOui
E051-08Nom de corrélation dans la clause FROMOui
E051-09Renommer les colonnes de la clause FROMAucun
E061Prédicats de base et conditions de recherchePartiel
E061-01Prédicat de comparaisonOui
E061-02Entre prédicatPartielAucun SYMMETRIC et ASYMMETRIC clause
E061-03Dans le prédicat avec la liste des valeursOui
E061-04Comme prédicatOui
E061-05Comme prédicat: clause D'échappementAucun
E061-06Prédicat NULLOui
E061-07Prédicat de comparaison quantifiéAucun
E061-08Existe prédicatAucun
E061-09Sous-requêtes dans le prédicat de comparaisonOui
E061-11Sous-requêtes dans dans le prédicatOui
E061-12Sous-requêtes dans le prédicat de comparaison quantifiéeAucun
E061-13Sous-requêtes corréléesAucun
E061-14Condition de rechercheOui
E071Expressions de requête de basePartiel
E071-01Opérateur de table distinct UNIONAucun
E071-02Opérateur de table UNION ALLOui
E071-03Sauf opérateur de table DISTINCTAucun
E071-05Les colonnes combinées via les opérateurs de table n'ont pas besoin d'avoir exactement le même type de donnéesOui
E071-06Tableau des opérateurs dans les sous-requêtesOui
E081Les privilèges de basePartielLes travaux en cours
E091Les fonctions de jeuOui
E091-01AVGOui
E091-02COUNTOui
E091-03MAXOui
E091-04MINOui
E091-05SUMOui
E091-06TOUS les quantificateursAucun
E091-07Quantificateur DISTINCTPartielToutes les fonctions d'agrégation ne sont pas prises en charge
E101Manipulation des données de basePartiel
E101-01Insérer une déclarationOuiRemarque: la clé primaire dans ClickHouse n'implique pas UNIQUE contrainte
E101-03Déclaration de mise à jour recherchéeAucunIl y a un ALTER UPDATE déclaration pour la modification des données de lot
E101-04Requête de suppression recherchéeAucunIl y a un ALTER DELETE déclaration pour la suppression de données par lots
E111Instruction SELECT à une ligneAucun
E121Prise en charge du curseur de baseAucun
E121-01DECLARE CURSORAucun
E121-02Les colonnes ORDER BY n'ont pas besoin d'être dans la liste selectAucun
E121-03Expressions de valeur dans la clause ORDER BYAucun
E121-04Instruction OPENAucun
E121-06Déclaration de mise à jour positionnéeAucun
E121-07Instruction de suppression positionnéeAucun
E121-08Déclaration de fermetureAucun
E121-10Instruction FETCH: implicite suivantAucun
E121-17Avec curseurs HOLDAucun
E131Support de valeur Null (nulls au lieu de valeurs)PartielCertaines restrictions s'appliquent
E141Contraintes d'intégrité de basePartiel
E141-01Contraintes non nullesOuiNote: NOT NULL est implicite pour les colonnes de table par défaut
E141-02Contrainte UNIQUE de colonnes non nullesAucun
E141-03Contraintes de clé primaireAucun
E141-04Contrainte 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érentielleAucun
E141-06Vérifier la contrainteOui
E141-07Colonne par défautOui
E141-08Non NULL déduit sur la clé primaireOui
E141-10Les noms dans une clé étrangère peut être spécifié dans n'importe quel ordreAucun
E151Support de TransactionAucun
E151-01COMMIT déclarationAucun
E151-02Déclaration de restaurationAucun
E152Instruction de transaction set de baseAucun
E152-01SET TRANSACTION statement: clause sérialisable de niveau D'isolementAucun
E152-02SET TRANSACTION statement: clauses en lecture seule et en lecture écritureAucun
E153Requêtes pouvant être mises à jour avec des sous requêtesAucun
E161Commentaires SQL en utilisant le premier Double moinsOui
E171Support SQLSTATEAucun
E182Liaison du langage hôteAucun
F031Manipulation de schéma de basePartiel
F031-01Instruction CREATE TABLE pour créer des tables de base persistantesPartielAucun 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-02Instruction créer une vuePartielAucun RECURSIVE, CHECK, UNDER, WITH OPTIONS clauses et aucun support pour les types de données résolus par l'utilisateur
F031-03Déclaration de subventionOui
F031-04ALTER TABLE statement: ajouter une clause de colonnePartielPas de support pour GENERATED clause et période de temps du système
F031-13Instruction DROP TABLE: clause RESTRICTAucun
F031-16Instruction DROP VIEW: clause RESTRICTAucun
F031-19REVOKE statement: clause RESTRICTAucun
F041Table jointe de basePartiel
F041-01INNER join (mais pas nécessairement le mot-clé INNER)Oui
F041-02INTÉRIEURE mot-cléOui
F041-03LEFT OUTER JOINOui
F041-04RIGHT OUTER JOINOui
F041-05Les jointures externes peuvent être imbriquésOui
F041-07La table intérieure dans une jointure extérieure gauche ou droite peut également être utilisée dans une jointure intérieureOui
F041-08Tous les opérateurs de comparaison sont pris en charge (plutôt que juste =)Aucun
F051Date et heure de basePartiel
F051-01Type de données de DATE (y compris la prise en charge du littéral de DATE)PartielAucun littéral
F051-02TYPE 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 0Aucun
F051-03Type 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 6AucunDateTime64 temps fournit des fonctionnalités similaires
F051-04Prédicat de comparaison sur les types de données DATE, heure et horodatagePartielUn seul type de données disponible
F051-05Distribution explicite entre les types datetime et les types de chaînes de caractèresOui
F051-06CURRENT_DATEAucuntoday() est similaire
F051-07LOCALTIMEAucunnow() est similaire
F051-08LOCALTIMESTAMPAucun
F081UNION et sauf dans les vuesPartiel
F131Groupées des opérationsPartiel
F131-01WHERE, GROUP BY et ayant des clauses prises en charge dans les requêtes avec des vues groupéesOui
F131-02Plusieurs tables prises en charge dans les requêtes avec des vues groupéesOui
F131-03Définir les fonctions prises en charge dans les requêtes groupées vuesOui
F131-04Sous requêtes avec des clauses GROUP BY et HAVING et des vues groupéesOui
F131-05Sélectionnez une seule ligne avec des clauses GROUP BY et HAVING et des vues groupéesAucun
F181Support de module MultipleAucun
F201Fonction de distributionOui
F221Valeurs par défaut explicitesAucun
F261Expression de casOui
F261-01Cas SimpleOui
F261-02Cas recherchéOui
F261-03NULLIFOui
F261-04COALESCEOui
F311Déclaration de définition de schémaPartiel
F311-01CREATE SCHEMAAucun
F311-02Créer une TABLE pour les tables de base persistantesOui
F311-03CREATE VIEWOui
F311-04CREATE VIEW: WITH CHECK OPTIONAucun
F311-05Déclaration de subventionOui
F471Valeurs de sous-requête scalaireOui
F481Prédicat null étenduOui
F812Base de repérageAucun
T321Routines SQL-invoked de baseAucun
T321-01Fonctions définies par l'utilisateur sans surchargeAucun
T321-02Procédures stockées définies par l'utilisateur sans surchargeAucun
T321-03L'invocation de la fonctionAucun
T321-04L'instruction d'APPEL deAucun
T321-05Déclaration de retourAucun
T631Dans le prédicat avec un élément de listeOui

Évaluation: 5 - 2 vote

Ce contenu a été utile?
★★★★★