Un bloc SQL peut contenir un certain nombre de clauses séparées par des points-virgules.
Les blocs individuels permettent d’effectuer les tâches suivantes à l’aide des mots-clés ci-dessous :
À l’exception des 3 premiers éléments :
Vous trouverez ci-dessous de plus amples informations sur les mots-clés :
Pour effacer la sélection, utilisez la clause
CLEAR SELECTION
Pour définir une variable scalaire, par exemple
LET <variablename> = <value>
Pour définir une variable de liste, par exemple
LIST <variablename> = <value>, <value>, <value>, <value>
Pour sélectionner des objets, utilisez le mot-clé SELECT, par exemple
SELECT
SELECT ALL
SELECT SELECTED
SELECT FROM conduit
SELECT ALL FROM conduit
SELECT SELECTED FROM conduit
SELECT WHERE x > 0
SELECT ALL WHERE x > 0
SELECT SELECTED WHERE x > 0
SELECT FROM conduit WHERE conduit_width > 250
SELECT ALL FROM conduit WHERE conduit_width > 250
SELECT SELECTED FROM conduit WHERE conduit_width > 250
Si vous effectuez une sélection dans la table actuelle avec le mode de sélection actuel, le mot-clé SELECT peut être omis, par exemple
x>0
Pour désélectionner des objets, utilisez le mot-clé DESELECT
DESELECT
DESELECT ALL
DESELECT SELECTED
DESELECT FROM conduit
DESELECT ALL FROM conduit
DESELECT SELECTED FROM conduit
DESELECT WHERE x > 0
DESELECT ALL WHERE x > 0
DESELECT SELECTED WHERE x > 0
DESELECT FROM conduit WHERE conduit_width > 250
DESELECT ALL FROM conduit WHERE conduit_width > 250
DESELECT SELECTED FROM conduit WHERE conduit_width > 250
Pour supprimer des objets, utilisez le mot clé DELETE
DELETE
DELETE ALL
DELETE SELECTED
DELETE FROM conduit
DELETE ALL FROM conduit
DELETE SELECTED FROM conduit
DELETE WHERE x > 0
DELETE ALL WHERE x > 0
DELETE SELECTED WHERE x > 0
DELETE FROM conduit WHERE conduit_width > 250
DELETE ALL FROM conduit WHERE conduit_width > 250
DELETE SELECTED FROM conduit WHERE conduit_width > 250
Pour modifier la valeur des champs ou des variables, utilisez le mot clé SET. Il est possible de définir plusieurs valeurs à la fois en séparant les affectations par des virgules.
SET x = x – 100, y = y – 100
SET x = x – 100, y = y – 100 WHERE ground_level > 20
Pour remplacer la table et le mode de sélection actuels, utilisez le mot-clé UPDATE.
UPDATE ALL SET x = x – 100, y = y - 100
UPDATE SELECTED SET x = x – 100, y = y - 100
UPDATE node SET x = x – 100, y = y - 100
UPDATE ALL node SET x = x – 100, y = y - 100
UPDATE SELECTED node SET x = x – 100, y = y – 100
UPDATE ALL SET x = x – 100, y = y – 100 WHERE ground_level > 20
UPDATE SELECTED SET x = x – 100, y = y – 100 100 WHERE ground_level > 20
UPDATE node SET x = x – 100, y = y - 100100 WHERE ground_level > 20
UPDATE ALL node SET x = x – 100, y = y – 100 100 WHERE ground_level > 20
UPDATE SELECTED node SET x = x – 100, y = y – 100 100 WHERE ground_level > 20
Pour sélectionner un certain nombre de valeurs, utilisez le mot-clé SELECT, suivi des valeurs que vous souhaitez afficher, séparées par des virgules.
SELECT node_id ,MAX(us_links.conduit_width), MIN(us_links.conduit_width)
Il est possible de remplacer le titre donné à la colonne dans le tableau ou le fichier CSV en utilisant le mot-clé AS, par exemple
SELECT node_id AS title,MAX(us_links.conduit_width) as mymax,MIN(us_links.conduit_width) as mymin
Le titre peut se présenter sans guillemets, auquel cas il ne peut pas y avoir d’espaces ou de caractères non alphanumériques, ou avec des guillemets, par exemple
SELECT node_id AS title,MAX(us_links.conduit_width) as mymax,MIN(us_links.conduit_width) as '£% my min'
Il est possible de remplacer la table
SELECT node_id AS title,MAX(us_links.conduit_width) as mymax,MIN(us_links.conduit_width) as mymin FROM node
Les résultats s’affichent sous forme de tableau, sauf si un fichier est spécifié à l’aide du mot-clé INTO
SELECT node_id AS title,MAX(us_links.conduit_width) as mymax,MIN(us_links.conduit_width) as mymin FROM node INTO FILE 'c:\temp\mynodes.csv'
Il est possible de filtrer les objets qui feront l’objet d’un rapport à l’aide du mot-clé WHERE
SELECT node_id AS title,MAX(us_links.conduit_width) as mymax,MIN(us_links.conduit_width) as mymin FROM node WHERE MAX(us_links.conduit_width) > 450
Il est possible de calculer les résultats agrégés sur des groupes d’objets
SELECT MAX(MAX(us_links.conduit_width)) GROUP BY system_type
Il est possible de limiter les résultats des agrégats rapportés à l’aide du mot-clé HAVING
SELECT MAX(MAX(us_links.conduit_width)) GROUP BY system_type HAVING MAX(MAX(us_links.conduit_width))<1000
Le tableau ci-dessous répertorie la syntaxe SQL prise en charge dans ce produit Autodesk. Des remarques supplémentaires sont disponibles ci-dessous.
Pour en savoir plus sur l’utilisation de SQL et les fonctions prises en charge, vous pouvez consulter le document technique sur le langage SQL dans InfoWorks WS Pro.
Le texte du commentaire est ignoré lorsque la requête est exécutée.
| /* | Début du texte du commentaire |
| */ | Fin du texte du commentaire |
|
INT(number) |
Partie entière d’un nombre. |
|
FLOOR(number) |
Entier le plus proche inférieur ou égal au paramètre. |
|
CEIL(number) |
Entier le plus proche supérieur ou égal au paramètre. |
| FIXED(number to convert,number of decimal places) | Étant donné un nombre et un nombre de décimales compris entre 0 et 8, convertissez le nombre en chaîne de caractères avec ce nombre de décimales, en arrondissant à l’unité supérieure ou inférieure selon le cas. Si le nombre de décimales est égal à 0, la chaîne ne contient pas de séparateur décimal. |
|
abs(x) |
Renvoie la valeur absolue de x. La fonction renvoie x si x >= 0, sinon -x |
|
left(s,n) |
Renvoie les n premiers caractères de la chaîne s ou la chaîne entière si n est supérieur à la longueur de la chaîne |
|
right(s,n) |
Renvoie les n derniers caractères de la chaîne s ou la chaîne entière si n est supérieur à la longueur de la chaîne |
|
mid(s,n,m) |
Renvoie la sous-chaîne de la chaîne s contenant m caractères à partir de la position n, en commençant par 1 comme position de départ. |
|
len(s) |
Renvoie la longueur de la chaîne s |
|
iif(x,y,z) |
Si l’expression x est vraie, renvoie y, sinon renvoie z |
| nvl(x,y) | Si la valeur de x est nulle, renvoie y, sinon renvoie x |
|
subst(s1,s2,s3) |
Remplace la première instance de la chaîne s2 dans la chaîne s1 par la chaîne s3 Vous trouverez ci-dessous quelques exemples : subst(node_id,'01','ND') appliqué à l’ID de nœud '01880132', renvoie 'ND880132' |
|
gsubst(s1,s2,s3) |
Remplace toutes les instances de la chaîne s2 dans la chaîne s1 par la chaîne s3 Vous trouverez ci-dessous quelques exemples : gsubst(node_id,'01','ND') appliqué à l’ID de nœud '01880132', renvoie 'ND88ND32' |
|
gensubst(s,regexp,format) |
Remplace la chaîne s par le format défini si l’expression régulière regxp correspond à la chaîne s, sinon renvoie la chaîne s inchangée Vous trouverez ci-dessous quelques exemples : gensubst(node_id,'(01)(..)(..)(.*)','ND\2\4a\1') appliqué au nœud '01880132', renvoie 'ND8832a01'
|
| nl() |
Renvoie un caractère de nouvelle ligne Par exemple, pour configurer un champ de note de trois lignes : SET notes = 'Set'+NL()+'new'+NL()+'line' |
|
yearpart(s) |
YEARPART est appliqué/renvoie l’année d’une date. Si la date est le 24/09/2007, YEARPART correspond à 2007. Remarque : Les fonctions YEARPART, MONTHPART et DAYPART fonctionnent sur les champs de date et de chaîne formatés en tant que dates. Un zéro est renvoyé si la chaîne à laquelle elles sont appliquées ne correspond pas à une date.
|
|
monthpart(s) |
MONTHPART est appliqué/renvoie le mois d’une date. Dans l’exemple ci-dessus, MONTHPART correspond à 09. Remarque : Les fonctions YEARPART, MONTHPART et DAYPART fonctionnent sur les champs de date et de chaîne formatés en tant que dates. Un zéro est renvoyé si la chaîne à laquelle elles sont appliquées ne correspond pas à une date.
|
|
daypart(s) |
DAYPART est appliqué/renvoie le jour d’une date. Dans l’exemple ci-dessus, DAYPART correspond à 24. Remarque : Les fonctions YEARPART, MONTHPART et DAYPART fonctionnent sur les champs de date et de chaîne formatés en tant que dates. Un zéro est renvoyé si la chaîne à laquelle elles sont appliquées ne correspond pas à une date.
|
|
NOW() |
Fonction sans paramètre définissant le présent. Cette fonction utilise la date et l’heure actuelles de l’ordinateur, de sorte que les requêtes SQL utilisant NOW n’aient pas à être réécrites avant d’être exécutées pour être à jour. |
|
DATEPART(date) |
DATEPART renvoie la partie date sous forme de date (par exemple, supprime les minutes des dates). |
|
TIMEPART(date) |
TIMEPART renvoie la partie heure d’une date sous la forme de minutes après minuit. |
|
YEARSDIFF(from,to) |
YEARSDIFF renvoie le nombre d’années complètes entre deux dates. Remarque : Les fonctions YEARSDIFF, MONTHSDIFF et DAYSDIFF ignorent les minutes des dates en question.
|
|
MONTHSDIFF(from,to) |
MONTHSDIFF renvoie le nombre de mois complets entre deux dates. Remarque : Les fonctions YEARSDIFF, MONTHSDIFF et DAYSDIFF ignorent les minutes des dates en question.
|
|
DAYSDIFF(from,to) |
DAYSDIFF renvoie le nombre de jours complets entre deux dates. Remarque : Les fonctions YEARSDIFF, MONTHSDIFF et DAYSDIFF ignorent les minutes des dates en question.
|
|
INYEAR(date,number) |
INYEAR renvoie true si la date se situe dans l’année indiquée sous forme de nombre. Remarque : Si l’un des paramètres des fonctions INYEAR, INMONTH, INYEARS et INMONTHS n’est pas un nombre, la fonction renvoie false. Si le nombre n’est pas un entier, il est arrondi à l’entier le plus proche.
|
|
INMONTH(date,month,year) |
INMONTH renvoie true si la date se situe dans l’année et dans le mois sous forme de nombres. Remarque : Si l’un des paramètres des fonctions INYEAR, INMONTH, INYEARS et INMONTHS n’est pas un nombre, la fonction renvoie false. Si le nombre n’est pas un entier, il est arrondi à l’entier le plus proche.
|
|
INYEARS(date,startyear,endyear) |
INYEARS renvoie true si la date se situe entre l’année de début et l’année de fin (incluse). Remarque : Si l’un des paramètres des fonctions INYEAR, INMONTH, INYEARS et INMONTHS n’est pas un nombre, la fonction renvoie false. Si le nombre n’est pas un entier, il est arrondi à l’entier le plus proche.
|
|
INMONTHS(date,startmonth,startyear,endmonth,endyear) |
INMONTHS renvoie true si la date est comprise entre le mois de début de l’année de début et le mois de fin de l’année de fin inclus, par exemple Remarque : Si l’un des paramètres des fonctions INYEAR, INMONTH, INYEARS et INMONTHS n’est pas un nombre, la fonction renvoie false. Si le nombre n’est pas un entier, il est arrondi à l’entier le plus proche.
|
|
ISDATE(putative_date) |
Si le champ correspond à une date parce qu’il provient de la base de données, cette fonction renvoie true ; s’il s’agit d’une chaîne, cette fonction renvoie true si elle peut être convertie en date, sinon elle renvoie false. |
|
MONTHYEARPART(date) |
MONTHYEARPART renvoie la chaîne "<month>/<year>". |
|
YEARMONTHPART(date) |
YEARMONTHPART renvoie la chaîne "<year>/<date>". |
|
MONTHNAME(date) |
MONTHNAME renvoie le mois (selon les paramètres régionaux). |
|
SHORTMONTHAME(date) |
SHORTMONTHNAME renvoie la forme abrégée du mois (tel que déterminé par les paramètres régionaux et la façon dont Windows l’abrège). |
|
DAYNAME(date) |
DAYNAME renvoie le jour (selon les paramètres régionaux). |
|
SHORTDAYNAME(date) |
SHORTDAYNAME renvoie la forme abrégée du jour (tel que déterminé par les paramètres régionaux et la façon dont Windows l’abrège). |
| NUMTOMONTHNAME(n) | Renvoie le nom du mois sous forme d’entier compris entre 1 et 12. |
| NUMTOSHORTMONTHNAME(n) | Renvoie la version abrégée d’un nom de mois (par exemple, JAN) en fonction d’un entier compris entre 1 et 12. |
| TODATE(year,month,day) | Renvoie la date en indiquant l’année, le mois et le jour sous forme d’entiers. |
| TODATETIME(year,month,day,hours,minutes) | Renvoie la date en indiquant l’année, le mois et le jour sous forme d’entiers. |
L’objectif de ces fonctions consiste à diviser les valeurs en intervalles, à noter les valeurs, à les mapper sur des listes, etc.
|
AREF(n,list) |
Si une liste de variables de liste est indiquée et qu’un nombre est compris entre 1 et la longueur de la liste, AREF renvoie le nième élément de la liste. |
|
LEN(list variable) |
LEN renvoie le nombre d’éléments dans une variable de liste. |
|
RINDEX(expression, list variable) |
RINDEX est une fonction qui ne peut être utilisée que si la liste est triée. L’objectif de la fonction RINDEX est essentiellement de diviser les valeurs en « paquets ». |
|
LOOKUP(expression, list variable) |
Si la liste contient n élément et que la valeur de l’expression est comprise entre 1 et n inclus, la fonction LOOKUP renvoie l’élément approprié de la liste. |
|
MEMBER(expression, list variable) |
MEMBER renvoie true si la valeur de l’expression est l’une des valeurs de la liste, et false dans le cas contraire. |
|
INDEX (expression, variable de liste) |
Si le résultat de l’expression correspond à la première valeur de la liste, INDEX renvoie 1, s’il correspond à la deuxième valeur, il renvoie 2, si le résultat de l’expression ne correspond pas à la liste, il renvoie 1. |
|
TITLE(n,liste) |
TITLE fournit des titres pour les « paquets » lorsque RINDEX est utilisé pour partitionner des valeurs en un certain nombre de plages. |
|
LOG(x) |
Calcule le logarithme (base 10) de x. |
|
LOGE(x) |
Calcule le logarithme (base e) de x. |
|
EXP(x) |
Calcule e^x. |
|
SIN(x) |
Calcule le sinus de x. |
|
COS(x) |
Calcule le cosinus de x. |
|
TAN(x) |
Calcule la tangente de x. |
|
ASIN(x) |
Calcule le sinus inverse de x. |
|
ACOS(x) |
Calcule le cosinus inverse de x. |
|
ATAN(x) |
Calcule la tangente inverse de x. |
|
ATAN2(x,y) |
Calcule la tangente inverse de x / y à l’aide des signes de x et y pour déterminer le quadrant. |
|
GAMMALN(x) |
Renvoie le LOG (base e) de la fonction gamma de x. |
Les fonctions d’agrégation permettent de calculer des valeurs en fonction de ce qui suit :
|
ANY |
ANY renvoie true si l’expression est vraie pour une ligne du champ de tableau, par exemple ANY(details.code=’JDS’) renvoie true si l’une des lignes du champ de tableau de détails contient le code JDS, false dans le cas contraire. L’expression entre crochets peut contenir plusieurs champs de tableau, d’autres champs de l’objet, des constantes et des fonctions non agrégées, et ceux-ci peuvent tous être combinés avec des opérateurs arithmétiques, de comparaison et logiques. |
|
ALL |
ALL renvoie true si l’expression est vraie pour l’ensemble des lignes, objets associés et intervalles de temps. |
|
COUNT |
COUNT compte le nombre de lignes, d’objets associé et de pas de temps pour lesquels l’expression est vraie. |
|
MAX |
MAX renvoie la valeur maximale (nombre, date ou chaîne) de l’ensemble des lignes, objets associés et pas de temps. |
|
MIN |
MIN renvoie la valeur minimale (nombre, date ou chaîne) de l’ensemble des lignes, objets associés et pas de temps. MAX et MIN fonctionnent sur les champs numériques, de date et de chaîne. Dans le cas de champs de chaîne, la comparaison entre les chaînes est effectuée en fonction de la langue dans laquelle votre installation Windows est configurée. |
|
AVG |
AVG renvoie la moyenne de toutes les valeurs non nulles de l’expression (numérique uniquement) pour l’ensemble des lignes, objets associés et pas de temps. |
|
FIRST |
FIRST renvoie la valeur de l’expression pour la première ligne, du premier objet associé et du pas de temps. |
|
LAST |
LAST renvoie la valeur de l’expression pour la première ligne, du premier objet associé et du pas de temps. Ainsi, dans le calcul de la valeur, l’un des enregistrements du champ tableau est pris en compte. |
|
+-*/><=>=<=<> |
Tous ces opérateurs font ce que l’on attend des nombres. <> signifie « différent de ». En outre, + peut être utilisé pour concaténer des chaînes. + est le seul opérateur arithmétique doté d’une signification particulière pour les chaînes. |
|
^ |
L’opérateur ^ signifie « élever à la puissance ». Par exemple, x^2 signifie x au carré. |
|
% |
a % b donne le reste de a / b, par exemple, année % 10 donne le dernier chiffre de l’année. |
|
ANDORNOT |
Explicite |
|
ISNULL |
Renvoie la valeur true si un champ est NULL |
|
IS NOT NULL |
Renvoie la valeur true si un champ n’est pas NULL |
|
LIKE |
Les deux caractères spéciaux que vous pouvez utiliser avec LIKE sont les suivants :
Tout autre caractère dans une chaîne correspond uniquement à lui-même. La correspondance est similaire à DOS, à savoir :
Comme pour DOS, dès que vous appuyez sur *, tout est mis en correspondance. Par conséquent, vous ne pouvez pas utiliser des expressions telles que LIKE '*AB' pour rechercher des éléments avec AB à la fin ou LIKE '*AB*' pour rechercher des éléments avec AB quelque part dans la chaîne. Notez que ce comportement de LIKE est différent de celui de Microsoft Access. |
|
MATCHES |
MATCHES permet d’effectuer des recherches plus complexes que l’opérateur LIKE en utilisant des expressions régulières. Les éléments de syntaxe importants sont les suivants :
La correspondance fonctionne comme suit :
Les expressions régulières sont particulièrement performantes et vous permettent d’en faire bien plus que les exemples de base ci-dessus. Pour en savoir plus sur les expressions régulières et leur syntaxe, voir cet article sur Wikipédia. |
|
True False NULL |
Explicite |
Il est possible d’appliquer les fonctions d’agrégation sur tous les résultats de simulation au lieu d’un seul instantané en utilisant tsr au lieu de sim.
|
DURATION |
DURATION : durée (en minutes) pendant laquelle l’expression est vraie (résultats uniquement) |
|
INTEGRAL |
INTEGRAL : somme de l’expression à chaque pas de temps multipliée par la longueur du pas de temps en minutes (résultats uniquement) |
|
WHENEARLIEST |
WHENEARLY : heure la plus ancienne pour laquelle l’expression est vraie (résultats uniquement) |
|
WHENLATEST |
WHENLATEST : heure la plus récente pour laquelle l’expression est vraie (résultats uniquement) |
|
EARLIEST |
EARLIEST : première valeur non nulle de l’expression (résultats uniquement) |
|
LATEST |
DERNIER : dernière valeur non nulle de l’expression (résultats uniquement) |
|
WHENMAX |
WHENMAX : moment auquel l’expression est à son maximum (résultats uniquement) |
|
WHENMIN |
WHENMIN : moment auquel l’expression est à son minimum (résultats uniquement) |
Le moteur SQL traite l’égalité de façon un peu différente. x = NULL et x <> NULL offrent le même résultat que X IS NULL et X IS NOT NULL.