Syntaxe SQL

Remarques sur les mots-clés

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 :

  1. Effacer la sélection – CLEAR SELECTION
  2. Définir une variable scalaire – LET
  3. Définir une variable de liste – LIST
  4. Sélectionner des objets – SELECT
  5. Désélectionner des objets (supprimer des objets de la sélection) – DESELECT
  6. Supprimer des objets – DELETE
  7. Modifier les valeurs des champs ou variables – SET et UPDATE
  8. Générer une table de valeurs qui peut être affichée dans un tableau ou importées dans un fichier CSV – SELECT

À l’exception des 3 premiers éléments :

Vous trouverez ci-dessous de plus amples informations sur les mots-clés :

  1. Effacer la sélection

    Pour effacer la sélection, utilisez la clause

    CLEAR SELECTION

  2. Définir une variable scalaire

    Pour définir une variable scalaire, par exemple

    LET <variablename> = <value>

  3. Définir une variable de liste

    Pour définir une variable de liste, par exemple

    LIST <variablename> = <value>, <value>, <value>, <value>

  4. Sélectionner des objets

    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

  5. Désélectionner des objets

    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

  6. Supprimer des objets

    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

  7. Modifier la valeur des champs ou des variables

    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

  8. Générer une table de valeurs

    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

Syntaxe SQL prise en charge

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.

Texte du commentaire

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

Fonctions

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'

  • L’expression régulière peut être utilisée pour diviser la chaîne en sous-expressions par des crochets.
  • Dans l’exemple ci-dessus, '(01)(..)(..)(.*)' correspond à un ID de nœud d’au moins 6 caractères commençant par 01. Le premier (..) correspond aux 3e et 4e caractères de la chaîne, le deuxième (..) aux 5e et 6e caractères et (.*) au reste de la chaîne.
  • Si une correspondance est établie, une chaîne est renvoyée dans le format défini ; où \1 représente les valeurs de la première sous-expression entre crochets '01', \2 représente les valeurs de la deuxième sous-expression entre crochets (...) - '88' dans ce cas, etc. jusqu'à \9.
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.

Fonctions de liste

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.

Fonctions mathématiques

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.

Fonctions d’agrégation

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.

Opérateurs arithmétiques

+-*/><=>=<=<>

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.

Opérateurs logiques

ANDORNOT

Explicite

Autres opérateurs

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 :

  • * signifie correspondre à n’importe quoi
  • ? signifie correspondre à un caractère

Tout autre caractère dans une chaîne correspond uniquement à lui-même.

La correspondance est similaire à DOS, à savoir :

  • LIKE '*' correspond à n'importe quoi
  • LIKE 'ABC*' correspond à tout ce qui commence par ABC
  • LIKE '???' correspond à une chaîne de 3 caractères

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 :

  • . - (point) tout caractère alphanumérique
  • * - zéro ou plusieurs des caractères précédents. Donc B* correspond à zéro ou plusieurs B
  • + - un ou plusieurs des caractères précédents. Donc B+ correspond à un ou plusieurs B
  • ? - zéro ou un des caractères précédents. Donc B? correspond à zéro ou un B

La correspondance fonctionne comme suit :

  • MATCHES '.*' correspond à n’importe quoi
  • MATCHES 'ABC.*' correspond à toute chaîne commençant par ABC
  • MATCHES 'ABC.+' correspond à toute chaîne commençant par ABC suivi d’au moins un caractère supplémentaire
  • MATCHES '.*ABC.*' correspond à toute chaîne contenant ABC
  • MATCHES '.*ABC' correspond à toute chaîne se terminant par ABC
  • MATCHES 'RS*' correspond à toute chaîne commençant par R suivi de zéro ou de plusieurs S

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.

Constantes

True

False

NULL

Explicite

Fonctions d’agrégation (résultats uniquement)

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)

Remarques supplémentaires sur l’utilisation de SQL

  1. Les vérifications de type étant limitées dans le moteur SQL, vous pouvez effectuer un certain nombre de tâches potentiellement utiles, telles que :
    1. SET user_number_1 = x > 390000 définit user_number_1 sur 1 pour les éléments avec x > 390000, 0 pour les autres, en tant qu’expressions conditionnelles évaluées à 1 pour true et 0 pour false.
    2. SET user_text_1 = z - définit user_text_1 sur la valeur z. Notez que lorsque vous effectuez cette opération, les chaînes sont automatiquement épurées des points décimaux et des décimales inutiles. Cela vous permet de concaténer d’autres éléments à la fin de ces chaînes, si nécessaire.
    3. SET user_number_1 = user_text_1 affecte la valeur si la chaîne correspond à un nombre valide.
  2. Le comportement de NULL est un peu complexe.
    1. NULL est essentiellement une valeur « Je n’ai pas de valeur ». Les vues sous forme de tableaux fonctionnent de la même manière pour les nombres en ce sens qu’il existe une différence entre insérer un 0 dans une cellule de tableau pour un nombre et la laisser vide. Une valeur « vide » est NULL. Ainsi, les objets avec des cellules vides sont sélectionnés si vous utilisez x IS NULL.
    2. Lorsqu’une opération implique la valeur NULL, la réponse est NULL. Par exemple
      • 3 + NULL correspond à NULL
      • 3 > NULL correspond à NULL
      • 3 < NULL correspond à NULL

      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.

  3. Pour les chaînes, une chaîne vide est à la fois NULL et "'' (chaîne vide). Par conséquent, asset_id IS NULL et asset_id = ''" et len(asset_id)=0 sélectionnent tous des éléments sans chaîne d’ID d’élément.
  4. Les champs booléens (champs avec des cases à cocher) n’ont pas de notion de NULL.
  5. une erreur d’analyse peut survenir lorsque vous incluez un nom de champ commençant par un nombre. Nous vous recommandons de placer ce nom de champ entre [ ] dans la requête SQL. Par exemple, au lieu d’écrire SET 2d_pt_id = subcatchment_id, vous pouvez utiliser SET [2d_pt_id] = subcatchment_id.