La clause SQL WHERE permet de filtrer les enregistrements selon des conditions définies.
Vous trouverez ci-dessous les opérateurs et fonctions courants pris en charge dans la clause WHERE des workflows DocuWare :
Opérateurs SQL standard
Opérateurs de comparaison
= (égal à)
!= ou <> (différent de)
> (supérieur à)
< (inférieur à)
>= (supérieur ou égal à)
<= (inférieur ou égal à)
Opérateurs logiques
AND (les deux conditions doivent être vraies)
OR (l'une ou l'autre condition peut être vraie)
NOT (inverse la condition)
Opérateur de plage
BETWEEN (dans une plage, bornes incluses)
Opérateur d'ensemble
IN (correspond à n'importe quelle valeur d'une liste)
Opérateurs de correspondance de motif
LIKE (correspond à un motif à l'aide de caractères génériques)
% représente zéro caractère ou plus
_ représente un seul caractère
Opérateurs Null
IS NULL (est une valeur null)
IS NOT NULL (n'est pas une valeur null)
Fonctions SQL standard
Fonctions de chaîne
Fonction | Description |
|---|---|
CONCAT(string1, string2, ...) | Concatène deux chaînes ou plus |
LEN(string) (MSSQL) LENGTH(string) (MySQL) | Renvoie la longueur d'une chaîne |
UPPER(string) | Convertit une chaîne en majuscules |
LOWER(string) | Convertit une chaîne en minuscules |
TRIM([characters FROM] string_expression) | Supprime les caractères de début, de fin, ou de début et de fin d'une chaîne (les espaces par défaut) |
REPLACE(string, old_substring, new_substring) | Remplace les occurrences d'une sous-chaîne dans une chaîne par une autre sous-chaîne |
SUBSTRING(string, position, length) | Extrait une sous-chaîne commençant à une position définie et d'une longueur donnée |
POSITION(substring IN string) (MySql only) | Renvoie la position de la première occurrence d'une sous-chaîne dans une chaîne |
CHAR_LENGTH(string) (MySql only) | Renvoie la longueur d'une chaîne en caractères |
RTRIM(string) | Supprime les espaces de fin d'une chaîne |
LTRIM(string) | Supprime les espaces de début d'une chaîne |
Fonctions numériques
Fonction | Description |
|---|---|
ABS(number) | Renvoie la valeur absolue d'un nombre |
ROUND(number, decimals) | Arrondit un nombre à un nombre défini de décimales |
CEIL(number) or CEILING(number) | Arrondit un nombre à l'entier supérieur le plus proche |
FLOOR(number) | Arrondit un nombre à l'entier inférieur le plus proche |
%(number, divisor) (MSSQL) MOD(number, divisor) (MySQL) | Renvoie le reste d'une division |
POWER(number, exponent) | Renvoie un nombre élevé à une puissance définie |
SQRT(number) | Renvoie la racine carrée d'un nombre |
Fonctions de date et d'heure
Fonction | Description |
|---|---|
GETDATE() (MSSQL) | Renvoie la date actuelle |
CURRENT_TIME() (MySql only) | Renvoie l'heure actuelle |
CURRENT_TIMESTAMP() | Renvoie la date et l'heure actuelles |
DATEPART(part FROM date) (MSSQL) EXTRACT(part FROM date) (MySQL) | Extrait une partie (par exemple l'année, le mois, le jour) d'une date |
DATEADD(datepart, number, date) (MSSQL) ADDDATE(date, INTERVAL value addunit) (MySQL) | Ajoute ou soustrait un intervalle défini à une date |
DATEDIFF(datepart, date1, date2) (MSSQL) DATEDIFF(date1, date2) (MySQL) | Renvoie l'écart en jours entre deux dates |
FORMAT(date, format) (MSSQL) DATE_FORMAT(date, format) (MySQL) | Met en forme une date selon un format défini |
Fonctions d'agrégation
Une fonction d'agrégation effectue un calcul sur un ensemble de valeurs et renvoie une seule valeur.
Fonction | Description |
|---|---|
COUNT(expression) | Renvoie le nombre de lignes correspondant à une condition définie |
SUM(expression) | Renvoie la somme d'une colonne numérique |
AVG(expression) | Renvoie la valeur moyenne d'une colonne numérique |
MIN(expression) | Renvoie la valeur minimale d'un ensemble de valeurs |
MAX(expression) | Renvoie la valeur maximale d'un ensemble de valeurs |
GROUP_CONCAT(expression) | Concatène les valeurs d'un groupe en une seule chaîne (spécifique à MySQL) |
Fonctions conditionnelles
Fonction | Description |
|---|---|
CASE WHEN condition THEN result [WHEN ...] ELSE result END | Renvoie une valeur selon des conditions définies |
COALESCE(expression1, expression2, ...) | Renvoie la première valeur non null d'une liste |
NULLIF(expression1, expression2) | Renvoie null si les deux expressions sont égales |
Fonctions de conversion
Fonction | Description |
|---|---|
CAST(expression AS data_type) | Convertit une expression d'un type de données vers un autre |
CONVERT(expression, data_type) | Convertit une expression d'un type de données vers un autre |
Sous-requêtes
Les sous-requêtes, également appelées requêtes internes ou requêtes imbriquées, sont prises en charge dans la clause WHERE sous des formats de base. Une sous-requête est une requête contenue dans une autre requête. Elle permet de définir des critères de filtrage plus complexes. Dans la clause WHERE, les sous-requêtes constituent des outils puissants pour filtrer des données selon des conditions complexes.
Sous-requête à une seule ligne
Rechercher les employés qui travaillent dans le même service que « John Doe ».
WHERE department_id = ( SELECT department_id FROM employees WHERE employee_name = 'John Doe' );Sous-requête à plusieurs lignes
Rechercher les employés qui travaillent dans des services situés à « New York ».
WHERE department_id IN ( SELECT department_id FROM departments WHERE location = 'New York' );Sous-requêtes corrélées (non prises en charge)
Les sous-requêtes corrélées, qui référencent des colonnes de la requête externe et sont évaluées une fois pour chaque ligne traitée par celle-ci, ne sont pas prises en charge. Ces constructions ne sont donc pas testées et leur fonctionnement régulier ne peut pas être garanti.
Jointures et Apply dans les sous-requêtes (non pris en charge)
Les opérateurs JOIN et APPLY peuvent servir à référencer d'autres tables dans des sous-requêtes. Il faut toutefois noter que cela n'est pas pris en charge. Ces constructions ne sont donc pas testées et leur fonctionnement régulier ne peut pas être garanti.
WHERE DW_DWDOCID IN (SELECT d.DWDOCID FROM [Documents] as d INNER JOIN [DOCUMENT_POOL] as dp ON d.DWDOCID = dp.DWDOCID WHERE d.DWDOCID < 20)