Page 1 sur 1
[RESOLU]Test d'un champs vide
Publié : mer. 03/nov./2021 12:07
par omega
Bonjour
J'ai une table qui contient, entre autres, un champs numérique nommé statut. Au moment de la création de ma table, le champs statut ne contient rien du tout. Mon problème est le suivant:
Regardez ce code:
La table contient environ une centaine d'enregistrements et statut est vide dans tous les enregistrements.
Cette instruction ne fait rien comme si statut n'est pas différent de 1.
Merci
Re: Test d'un champs vide
Publié : mer. 03/nov./2021 12:38
par Marc56
Si c'est un champs numérique alors status=1 pas '1'

Re: Test d'un champs vide
Publié : mer. 03/nov./2021 13:54
par omega
Bonjour Mar56
La syntaxe sql exige ce format d'écriture: where x='1' et non pas where x=1. Par contre on peut écrire if x=1 .....
Cela ne répond donc pas à ma question
Merci d'avoir essayé
Re: Test d'un champs vide
Publié : mer. 03/nov./2021 14:15
par GallyHC
sql="Update MaTable set statut='1' where statut is null" > null n'est pas une valeur donc pas comparable.
Re: Test d'un champs vide
Publié : mer. 03/nov./2021 14:39
par Marc56
omega a écrit : mer. 03/nov./2021 13:54
La syntaxe sql exige ce format d'écriture: where x='1' et non pas where x=1. Par contre on peut écrire if x=1 .....
Tu peux parfaitement te passer des ' ' pour des valeurs numériques dans un champs NUMERIC
Code : Tout sélectionner
UseSQLiteDatabase()
Filename$ = GetTemporaryDirectory() + "Test.sqlite"
If CreateFile(0, Filename$)
Debug "Fichier de base de données créé"
CloseFile(0)
EndIf
If OpenDatabase(0, Filename$, "", "")
Debug "Connecté à PureBasic.sqlite"
If DatabaseUpdate(0, "CREATE TABLE MaTable (statut NUMERIC);")
Debug "Table créée"
EndIf
; If DatabaseUpdate(0, "INSERT INTO MaTable VALUES ('1');" +
; "INSERT INTO MaTable VALUES ('2');" +
; "INSERT INTO MaTable VALUES ('3');")
If DatabaseUpdate(0, "INSERT INTO MaTable VALUES (1);" +
"INSERT INTO MaTable VALUES (2);" +
"INSERT INTO MaTable VALUES (3);")
Debug "INSERT 3 OK"
EndIf
;SQL.s = "Update MaTable set statut='1' where statut <>'1' "
SQL.s = "Update MaTable set statut = 1 where statut <> 1 "
If DatabaseUpdate(0, SQL)
Debug "UPDATE OK"
EndIf
EndIf
CloseDatabase(0)
(testé aussi avec MariaDB et PostgreSQL)
La solution est donnée par GallyHC
Code : Tout sélectionner
SQL.s = "UPDATE MaTable SET statut = 1 WHERE statut IS NULL;"
(avec ou sans ' ' )

[RESOLU] Test d'un champs vide
Publié : mer. 03/nov./2021 14:59
par omega
Merci beaucoup à toi GallyHc merci à toi aussi Marc pour cette précision de format. De toute façon, les deux solutions marchent bien avec ou sans quotes. Je les ai testées toutes les 2.
IS NULL est exactement ce que je cherchais. Je viens de tester et a marche !
Merci encore et bonne continuation