DDSQL - Expressions et opérateurs (Preview)

Les expressions de valeur sont le langage d’expression général utilisé pour produire des valeurs pour les conditions, les expressions SELECT, les filtres et les clauses telles que WHERE, ORDER BY et GROUP BY. La syntaxe des expressions DDSQL est un sur-ensemble de la syntaxe des expressions SQL.

Opérateurs arithmétiques

DDSQL prend en charge la notation arithmétique infixe binaire et unaire standard de SQL et de nombreux autres langages :

OpérateurRôleExempleRésultat
+addition2 + 35
-soustraction2 - 3-1
*multiplication2 * 36
/division (sans troncature)5 / 22.5

L’ordre standard des opérations s’applique. Pour contrôler l’ordre des opérations, ajoutez des parenthèses : (5 - 2) * 3.

Opérateurs de comparaison

DDSQL implémente les opérateurs de comparaison suivants :

OpérateurRôleExempleRésultat
>supérieur à2 > 3false
<inférieur à2 < 3true
>=supérieur ou égal à3 >= 2true
<=inférieur ou égal à3 <= 2false
=égal à*3 = 3true
!=, <>différent de3 != 3false

Pour les références de tags et les groupes de tags, l’opérateur d’égalité (=) est traité comme une comparaison « contient ». Consultez la section Interrogation des tags dans DDSQL pour en savoir plus.

Mots-clés de comparaison SQL

DDSQL prend en charge les mots-clés SQL suivants, qui fonctionnent comme des opérateurs booléens standard :

OpérateurRôleExempleRésultat
NOTFiltrer les enregistrements selon plusieurs conditions.SELECT * FROM host WHERE NOT env = 'prod';Renvoyer tous les hosts qui ne sont pas dans l’environnement prod.
ANDFiltrer les enregistrements selon plusieurs conditions.SELECT * FROM host WHERE env = 'prod' AND cloud_provider = 'aws';Renvoyer tous les hosts qui se trouvent dans l’environnement prod et chez le fournisseur cloud AWS.
ORFiltrer les enregistrements selon plusieurs conditions.SELECT * FROM host WHERE env = 'prod' AND cloud_provider = 'aws';Renvoyer tous les hosts qui se trouvent soit dans l’environnement prod, soit chez le fournisseur cloud aws.

DDSQL prend également en charge les mots-clés de comparaison suivants, tels qu’ils sont définis dans la norme SQL :

OpérateurRôleExempleRésultat
IS NULLSélectionner les lignes si le champ spécifié est null.SELECT * FROM host WHERE cloud_provider IS NULL;Renvoyer toutes les lignes ne contenant aucune donnée dans la colonne cloud_provider.
IS NOT NULLSélectionner les lignes si le champ spécifié n’est pas null. Exclure les lignes avec des données manquantes.SELECT * FROM host WHERE cloud_provider IS NOT NULL;Renvoyer toutes les lignes contenant des données dans la colonne cloud_provider.
LIKERechercher un modèle spécifique dans une valeur de chaîne. Vous pouvez utiliser les caractères génériques suivants pour définir les modèles :
Signe pourcentage (%) : représente zéro, un ou plusieurs caractères.
Tiret bas (_) : représente un seul caractère.
SELECT * FROM aws_eks_cluster WHERE LOWER(logging) LIKE '%"enabled":true%';Renvoyer toutes les lignes de la table aws_eks_cluster où la colonne logging contient "enabled":true.
NOT LIKEExclure des lignes d’une recherche lorsque la ligne présente un modèle spécifique dans une valeur de chaîne. Vous pouvez utiliser les caractères génériques % et _ pour la correspondance de modèles.SELECT * FROM aws_eks_cluster WHERE LOWER(logging) NOT LIKE '%"enabled":true%';Renvoyer toutes les lignes de la table aws_eks_cluster où la colonne logging ne contient pas "enabled":true%'.
INRechercher plusieurs valeurs dans une clause WHERE. L’opérateur IN est un raccourci pour plusieurs conditions OR.SELECT * FROM host WHERE cloud_provider IN ('aws', 'gcp');Renvoyer toutes les lignes de la table host où la valeur de cloud_provider est soit ‘aws’, soit ‘gcp’.
NOT INRemplacer un ensemble d’arguments par l’opérateur <> ou != combiné avec l’opérateur AND.SELECT * FROM host WHERE cloud_provider NOT IN ('aws', 'gcp');Renvoyer toutes les lignes où cloud_provider n’est ni aws ni gcp.

DDSQL prend en charge le mot-clé BETWEEN tel que a BETWEEN x AND y est équivalent à a >= x AND a <= y. Consultez la documentation Postgres pour BETWEEN pour en savoir plus.

Opérateurs logiques

NomRôle
ANDLogique booléenne, a & b
OULogique booléenne, a || b
XORLogique booléenne, a ^ b
NOTLogique booléenne, !a
IS NULLRenvoie true pour chaque ligne qui est null

CASE

L’expression CASE est une expression conditionnelle générique, similaire aux instructions if/else dans d’autres langages de programmation. CASE se présente sous deux formes : simple et recherchée.

Instructions CASE simples

Les instructions CASE simples utilisent la syntaxe suivante :

CASE expression
  WHEN value THEN result
  [ WHEN ... ]
  [ ELSE result ]
END

L’expression est calculée, puis comparée à chacune des expressions de valeur dans les clauses WHEN jusqu’à ce qu’une valeur égale soit trouvée. Si aucune correspondance n’est trouvée, le résultat de la clause ELSE est renvoyé, ou NULL si ELSE est omis.

Instructions CASE recherchées

Les instructions CASE recherchées utilisent la syntaxe suivante :

CASE
  WHEN condition THEN result
  [ WHEN ... ]
  [ ELSE result ]
END

Si le résultat d’une condition est vrai, la valeur de l’expression CASE est le résultat qui suit la condition, et le reste de l’expression CASE n’est pas traité. Si le résultat de la condition n’est pas vrai, les clauses WHEN suivantes sont examinées de la même manière. Si aucune condition WHEN n’est vraie, la valeur de l’expression CASE est le résultat de la clause ELSE. Si la clause ELSE est omise et qu’aucune condition n’est vraie, le résultat est NULL.

CAST

CAST spécifie une conversion d’un type de données vers un autre.

Syntaxe

CAST(expression AS type)

Tous les types ne sont pas convertibles de cette façon.

DDSQL prend également en charge la syntaxe de cast Postgres :

expression::type

Par exemple, SELECT 1::text;.