[Résolu] Remplacer valeur d'un champ booléen
Modérateur : Vilains modOOs
Règles du forum
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.
-
- NOOuvel adepte
- Messages : 15
- Inscription : 07 mars 2008 11:51
[Résolu] Remplacer valeur d'un champ booléen
Bonjour à tous,
Je n'ai pas trouvé de réponse, désolé si elle s'y trouve
Voilà le problème, j'ai 2000 enregistrement environ qui ont été importés ou encodés avant que je ne m'aperçoive que je n'avais pas mis les valeurs par défaut de 12 cases à cocher qui devaient être sur NON (FALSE).
Au lieu de cela elles étaient sur <aucun(e)> (UNDEFINED)
Je cherche le moyen de faire une commande sql remettant tout ces champs UNDEFINED sur FALSE... mais je n'arrive déjà pas dans une requête à faire sortir uniquement ces champs (quel critère mettre ?)
Merci d'avance si vous avez une piste
A bientôt
Raf
Je n'ai pas trouvé de réponse, désolé si elle s'y trouve
Voilà le problème, j'ai 2000 enregistrement environ qui ont été importés ou encodés avant que je ne m'aperçoive que je n'avais pas mis les valeurs par défaut de 12 cases à cocher qui devaient être sur NON (FALSE).
Au lieu de cela elles étaient sur <aucun(e)> (UNDEFINED)
Je cherche le moyen de faire une commande sql remettant tout ces champs UNDEFINED sur FALSE... mais je n'arrive déjà pas dans une requête à faire sortir uniquement ces champs (quel critère mettre ?)
Merci d'avance si vous avez une piste
A bientôt
Raf
Dernière modification par Raf le 25 mars 2008 13:11, modifié 1 fois.
OpenOffice 2.3.1 sous windows XP SP2
-
- Grand Maître de l'OOffice
- Messages : 11276
- Inscription : 02 mai 2006 08:42
Bonjour
Utiliser Outils > SQL avec une instruction du type :
Utiliser Outils > SQL avec une instruction du type :
Code : Tout sélectionner
UPDATE "TClients" SET "case" = FALSE
-
- NOOuvel adepte
- Messages : 15
- Inscription : 07 mars 2008 11:51
Merci beaucoup pour cette réponse...
J'ai testé dans ma base d'essai. Cela fonctionne mais en fait cela ne fait pas exactement ce que je veux. Car là cela me mets la case à false même si elle avait été encodée à true (ce qui me fait perdre des centaines d'encodage), or je veux juste mettre sur false ceux qui n'étaient ni false ni true (je sais pas si je suis très clair ?)
Il doit y avoir un Where à ajouter mais avec undefined cela ne fonctionne pas
J'ai testé dans ma base d'essai. Cela fonctionne mais en fait cela ne fait pas exactement ce que je veux. Car là cela me mets la case à false même si elle avait été encodée à true (ce qui me fait perdre des centaines d'encodage), or je veux juste mettre sur false ceux qui n'étaient ni false ni true (je sais pas si je suis très clair ?)
Il doit y avoir un Where à ajouter mais avec undefined cela ne fonctionne pas
OpenOffice 2.3.1 sous windows XP SP2
-
- IdOOle de la suite
- Messages : 25175
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Alors au pif...
Code : Tout sélectionner
UPDATE "TClients" SET "case" = FALSE WHERE "case" NOT TRUE OR "case" NOT FALSE
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
Améliorez AOO et votez pour les issues
-
- NOOuvel adepte
- Messages : 15
- Inscription : 07 mars 2008 11:51
Merci beaucoup !!!
Mais cela ne fonctionne pas
Unexpected token in statement [UPDATE "T_clients" SET "SF" = FALSE WHERE "SF" NOT TRUE]
Dans une requête, j'arrive à ne sélectionner que ceux qui sont cochés ou décoché avec le critère BETWEEN 0 AND 1 (ou IN (0,1) )
mais
NOT BETWEEN 0 AND 1 ne retourne rien
et
la commande fonctionne mais ne donne pas le résultat attendu (cela ne change rien en fait)
Merci quand même je continue à chercher de mon côté mais si vous avez une idée lumineuse
A bientôt
Raf
Mais cela ne fonctionne pas
Unexpected token in statement [UPDATE "T_clients" SET "SF" = FALSE WHERE "SF" NOT TRUE]
Dans une requête, j'arrive à ne sélectionner que ceux qui sont cochés ou décoché avec le critère BETWEEN 0 AND 1 (ou IN (0,1) )
mais
NOT BETWEEN 0 AND 1 ne retourne rien
et
Code : Tout sélectionner
UPDATE "T_clients" SET "SF" = FALSE WHERE "SF" NOT BETWEEN 0 AND 1
Merci quand même je continue à chercher de mon côté mais si vous avez une idée lumineuse
A bientôt
Raf
OpenOffice 2.3.1 sous windows XP SP2
-
- NOOuvel adepte
- Messages : 15
- Inscription : 07 mars 2008 11:51
EN fait c'est peut être aussi plus simple de se dire que je souhaites mettre tous les enregistrement à false sauf ceux qui sont à true mais NOT 1 ne fonctionne pas non plus.
Edit Le truc qui aurait du fonctionner
Ne fonctionne pas (enfin la requête s'exécute). Et en requête cela me retourne uniquement les FALSE. Tout se passe comme si les UNDEFINED n'existaient simplement pas (sauf quand je fais la solution de Pierre-Yves Samyn mais qui me fait perdre les true)
Edit Le truc qui aurait du fonctionner
Code : Tout sélectionner
UPDATE "T_clients" SET "SF" = FALSE WHERE NOT ( ( "SF" =1 ) )
OpenOffice 2.3.1 sous windows XP SP2
-
- Grand Maître de l'OOffice
- Messages : 11276
- Inscription : 02 mai 2006 08:42
Re: Remplacer valeur d'un champ booléen
Ah... dommage que tu ne l'aies pas précisé plus tôt :Raf a écrit :sauf quand je fais la solution de Pierre-Yves Samyn mais qui me fait perdre les true
Dans ce cas :Raf a écrit :Voilà le problème, j'ai 2000 enregistrement environ qui ont été importés ou encodés avant que je ne m'aperçoive que je n'avais pas mis les valeurs par défaut de 12 cases à cocher qui devaient être sur NON (FALSE). ...
Je cherche le moyen de faire une commande sql remettant tout ces champs UNDEFINED sur FALSE...
Code : Tout sélectionner
update "Activités" set "case"=false where ifnull("case",0) <>1
-
- NOOuvel adepte
- Messages : 15
- Inscription : 07 mars 2008 11:51
ROLALA CA MARCHE !!!!
MERCI !!!
Pour ma gouverne, peux-tu me traduire en langage humain la fin de la commande
Code : Tout sélectionner
where ifnull("case",0) <>1
Mais donc globalement cela veut dire que les UNDEFINED sont considérés comme nul.
OpenOffice 2.3.1 sous windows XP SP2
-
- Grand Maître de l'OOffice
- Messages : 11276
- Inscription : 02 mai 2006 08:42
Code : Tout sélectionner
IFNULL(exp,valeur)
Concrétement, on remplace Null par zéro.
cf. documentation http://hsqldb.org/doc/guide/ch09.html#N1251E
-
- NOOuvel adepte
- Messages : 15
- Inscription : 07 mars 2008 11:51