Firebird Null Guide French
84.35 KB
14 页
0 下载
3 浏览
0 评论
0 收藏
| 语言 | 格式 | 评分 |
|---|---|---|
法语 | .pdf | 3 |
| 概览 | ||
Guide Firebird et NULL Comportement et précautions au sujet de NULL dans Firebird SQL Paul Vinkenoog Traduction en français: Philippe Makowski 04 mai 2005 - Document version 0.2.1-fr 2 Table des matières Introduction ........................................................................................................................................... 3 Qu'est ce que NULL? .............................................................................................................................. 3 NULL dans les expressions ..................................................................................................................... 3 Expressions retournant NULL .......................................................................................................... 4 NULL dans des expressions booléennes ........................................................................................... 4 Plus de logique (ou pas) ................................................................................................................. 5 NULL dans des fonctions d'agrégat .................................................................................................. 5 NULL dans les UDFs .............................................................................................................................. 6 NULL <-> non-NULL conversions non demandées ............................................................................ 6 Soyez préparés aux conversions non voulues ................................................................................... 7 Plus d'information sur les UDF ....................................................................................................... 7 NULL dans des instructions if ............................................................................................................... 7 Tester si quelque chose est NULL ........................................................................................................... 8 Affecter NULL à une variable ou un champ ............................................................................................. 9 Travailler avec NULL ............................................................................................................................. 9 Tester NULL - si cela est nécessaire ................................................................................................ 9 Vérifier que des champs sont égaux .............................................................................................. 10 Substituer une valeur à NULL ....................................................................................................... 11 Résumé ................................................................................................................................................ 12 Annexe A: Historique du document ...................................................................................................... 13 Annexe B: Licence ............................................................................................................................... 14 3 Introduction Régulièrement, dans les listes de support sur Firebird des questions au sujet de « choses étranges » arrivant avec NULLdans Firebird SQL sont posées. Ce concept semble difficile à comprendre - peut être à cause de son nom, qui semble correspondre à « rien » qui donc n'aurait aucune conséquence s'il est ajouté à un nombre ou ajouté à la fin d'une chaîne de caractères. En fait, le résultat de ces opérations renvoie toujours NULL. Cet article explore le comportement de NULL dans Firebird SQL, pointe les chausse-trappe habituelles et vous montre comment travailler avec des expressions qui contiennent NULL ou peuvent avoir un résultat NULL. Si vous voulez une référence rapide pour rafraîchir votre mémoire, allez directement à ce résumé (qui est vrai- ment condensé). Note Certaines phrases et exemples dans ce guide sont empruntés au Guide de démarrage de Firebird, publié initia- lement par IBPhoenix, et maintenant partie intégrante du Projet Firebird. Qu'est ce que NULL? Dans SQL, NULL n'est pas une valeur. C'est un état indiquant que la valeur d'un item est inconnue ou inexistante. Ce n'est ni zéro ni blanc ni une « chaîne vide » et cela ne se comporte comme aucune de ces valeurs. Peu de choses sèment autant le trouble dans SQL que NULL, et pourtant son mécanisme est simple à comprendre quand on suit cette simple définition suivante : NULL signifie indéterminé. Laisser moi le redire : NULL signifie INDÉTERMINÉ Gardez cette définition en tête quand vous lirez le reste de cet article, et tout ce qui vous semblait illogique dans le comportement de NULL s'expliquera quasiment de lui même. NULL dans les expressions Combien d'entre nous ont appris à leurs dépends que NULL est contagieux: utilisez le dans une expression numérique, de chaîne de caractère ou de date/heure, et le résultat sera toujours NULL. Utilisez le dans une expression booléenne, et le résultat dépendra du type d' opération et des autres valeurs impliquées. Notez au passage que dans les versions de Firebird avant 2.0, il est le plus souvent illégal d'utiliser la constante NULL directement dans des opérations ou comparaisons. Partout où vous verrez NULL dans les instructions suivantes, lisez le comme « un champ, une variable ou une autre expression renvoyant NULL ». Guide Firebird et NULL 4 Expressions retournant NULL Les expressions dans cette liste renvoient toujours NULL: • 1 + 2 + 3 + NULL • 'Home ' || 'sweet ' || NULL • MyField = NULL • MyField <> NULL • NULL = NULL • not (NULL) Si vous avez des difficultés à comprendre pourquoi, souvenez vous que NULL signifie « indéterminé ». Regardez aussi le tableau suivant où des explications sont données au cas par cas. Dans le tableau nous n'écrivons pas NULL dans les expressions (comme dit plus haut, c'est souvent interdit); à la place, nous utilisons deux entités A et B qui sont toutes deux NULL. A et B peuvent être des champs, des variables, ou des sous-expressions - du moment quelles sont NULL, elles ont le même comportement dans les expressions utilisées. Tableau 1. Opérations des entités A et B null Si A et B sont NULL, alors: Est: Parce que: 1 + 2 + 3 + A NULL Si A est indéterminée, alors 6 + A est aussi indéterminée. 'Home ' || 'sweet ' || A NULL Si A est indéterminée, 'Home sweet ' || A est aussi indéter- minée. MonChamp = A NULL Si A est indéterminée, vous ne pouvez dire si MonChamp à la même valeur... MonChamp <> A NULL ...mais vous ne pouvez non plus dire si MonChamp à une valeur différente ! A = B NULL Avec A et B indéterminées, il est impossible de savoir si elles sont égales. not (A) NULL Si A est indéterminée, sa négation est aussi indéterminée. NULL dans des expressions booléennes Non avons déjà vu que not(NULL) renvoie NULL. Pour les opérateurs and et or , les choses sont un peu plus compliquées : • NULL or false = NULL • NULL or true = true • NULL or NULL = NULL • NULL and false = false • NULL and true = NULL • NULL and NULL = NULL Le SQL Firebird n'a pas de type booléen; les constantes true et false n'existent pas. Dans la colonne de gauche du tableau suivant, (true) et (false) représentent des expressions renvoyant true/false. Guide Firebird et NULL 5 Tableau 2. Opérations booléennes sur une entité A null Si A est NULL, alors: Est: Parce que: A or (false) NULL « A or false » a toujours la même valeur que A - qui est indéterminée. A or (true) true « A or true » est toujours true - la valeur de A n'a pas d'importance. A or A NULL « A or A » est toujours égal à A - qui est NULL. A and (false) false « A and false » est toujours false - la valeur de A n'a pas d'importance. A and (true) NULL « A and true » a toujours la même valeur que A - qui est indéterminée. A and A NULL « A and A » est toujours égal à A - qui est NULL. Tous ces résultats sont en accord avec la logique booléenne. Le fait que, pour calculer « X or true » et « X and false », vous n'ayez simplement pas besoin de connaitre la valeur de X, fait partie des bases d'une fonctionnalité que nous
| ||
下载文档到本地,方便使用
共 14 页, 还有
8 页可预览,
继续阅读
文档评分










