Changeset 732
- Timestamp:
- 10/05/07 19:06:40 (1 year ago)
- Files:
-
- traduc/branches/bv82x/manuel/func.xml (modified) (18 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
traduc/branches/bv82x/manuel/func.xml
r706 r732 9069 9069 </sect1> 9070 9070 9071 <!-- ICI -->9072 9071 <sect1 id="functions-comparisons"> 9073 9072 <title>Comparaisons de lignes et de tableaux</title> … … 9111 9110 9112 9111 <para> 9113 Cette section décrit plusieurs constructions spécialisées pour les9114 comparaisons multiples entre desgroupes de valeurs. Ces formes sont9115 syntaxiquement en relation avec les formes desous-requêtes de la section9116 précédente mais n'impliquent pas de sous-requêtes. Ces formes impliquant des9117 sous-expressions de tableaux sont des extensions de9112 Cette section décrit des constructions adaptées aux 9113 comparaisons entre groupes de valeurs. Ces formes sont 9114 syntaxiquement liées aux formes des sous-requêtes de la section 9115 précédente, mais elles n'impliquent pas de sous-requêtes. Les formes qui 9116 impliquent des sous-expressions de tableaux sont des extensions de 9118 9117 <productname>PostgreSQL</productname> ; le reste est compatible avec 9119 9118 <acronym>SQL</acronym>. Toutes les formes d'expression documentées dans cette … … 9140 9139 9141 9140 <para> 9142 Notez que si l'expression du côté gauche renvoie nulou s'il n'y a pas9143 de valeurs du côté droit égales et qu'au moins une des expressionsdu côté9144 droit renvoie la valeurNULL, le résultat de la construction9145 <token>IN</token> seraNULL et non pas faux. Ceci est en accord avec les9141 Si l'expression du côté gauche renvoie NULL, ou s'il n'y a pas 9142 de valeurs du côté droit égales et qu'au moins une expression du côté 9143 droit renvoie NULL, le résultat de la construction 9144 <token>IN</token> est NULL et non pas faux. Ceci est en accord avec les 9146 9145 règles du standard SQL pour les combinaisons booléennes de valeurs NULL. 9147 9146 </para> … … 9155 9154 <para> 9156 9155 Le côté droit est une liste entre parenthèses d'expressions scalaires. Le 9157 résultat est vrai (<quote>true</quote>) si l 'expression du côté gaucheest9158 différent e de toutes les expressions du côté droit. Ceciest une notation9159 raccourcie pour9156 résultat est vrai (<quote>true</quote>) si le résultat de l'expression du côté gauche est 9157 différent de toutes les expressions du côté droit. C'est une notation 9158 raccourcie de 9160 9159 9161 9160 <synopsis><replaceable>expression</replaceable> <> <replaceable>valeur1</replaceable> … … 9167 9166 9168 9167 <para> 9169 Notez que si l'expression du côté gauche renvoie une valeur NULLou s'il9168 Si l'expression du côté gauche renvoie NULL, ou s'il 9170 9169 existe des valeurs différentes du côté droit et qu'au moins une expression 9171 du côté droit renvoie la valeurNULL, le résultat de la construction9172 <token>NOT IN</token> seraNULL et non pas vrai. Ceci est en accord avec les9173 règles du standard du SQL pour les combinaisons booléennes de svaleurs NULL.9170 du côté droit renvoie NULL, le résultat de la construction 9171 <token>NOT IN</token> est NULL et non pas vrai. Ceci est en accord avec les 9172 règles du standard du SQL pour les combinaisons booléennes de valeurs NULL. 9174 9173 </para> 9175 9174 … … 9178 9177 <literal>x NOT IN y</literal> est équivalent à <literal>NOT (x IN 9179 9178 y)</literal> dans tout les cas. Néanmoins, les valeurs NULL ont plus de 9180 chances de sur venir pour le novice avec l'utilisation de <token>NOT9181 IN</token> qu'en utilisant <token>IN</token>. Il est préférable d'exprimer9182 votre condition de façon positive si possible.9179 chances de surprendre le novice avec <token>NOT IN</token> qu'avec 9180 <token>IN</token>. Quand cela est possible, il est préférable d'exprimer 9181 la condition de façon positive. 9183 9182 </para> 9184 9183 </tip> … … 9193 9192 <para> 9194 9193 Le côté droit est une expression entre parenthèses qui doit renvoyer une 9195 valeur de type array. L'expression du côté gauche est évaluée et comparée à9196 chaque élément du tableau en utilisant l'<replaceable>opérateur</replaceable>9197 donné etqui doit renvoyer un résultat booléen. Le résultat de9198 <token>ANY</token> est vrai (<quote>true</quote>) si un résultat vrai est obtenu. Le9199 résultat est faux (<quote>false</quote>) si aucun résultat vrai n'est trouvé9200 (ceci incluant le cas spécial où le tableaune contient aucun élément).9194 valeur de type array. L'expression du côté gauche est évaluée et comparée à 9195 chaque élément du tableau en utilisant l'<replaceable>opérateur</replaceable> 9196 donné, qui doit renvoyer un résultat booléen. Le résultat de 9197 <token>ANY</token> est vrai (<quote>true</quote>) si un résultat vrai est obtenu. Le 9198 résultat est faux (<quote>false</quote>) si aucun résultat vrai n'est trouvé 9199 (ce qui inclut le cas spécial du tableau qui ne contient aucun élément). 9201 9200 </para> 9202 9201 9203 9202 <para> 9204 9203 Si l'expression de tableau ramène un tableau NULL, le résultat de 9205 <token>ANY</token> sera NULL. Si l'expression du côté gauche ramène un9204 <token>ANY</token> est NULL. Si l'expression du côté gauche retourne 9206 9205 NULL, le résultat de <token>ANY</token> est habituellement NULL (bien qu'un 9207 opérateur de comparaison non strict p ourrait ramenerun résultat différent).9206 opérateur de comparaison non strict puisse conduire à un résultat différent). 9208 9207 De plus, si le tableau du côté droit contient des éléments NULL et qu'aucune 9209 comparaison vraie n'est obtenue, le résultat de <token>ANY</token> seraNULL,9210 et non pas fa lse (encore une fois, en supposantun opérateur de comparaison9211 strict). Ceci est fait en accord avec les règles normales deSQL pour les9208 comparaison vraie n'est obtenue, le résultat de <token>ANY</token> est NULL, 9209 et non pas faux (<quote>false</quote>) (là aussi avec l'hypothèse d'un opérateur de comparaison 9210 strict). Ceci est en accord avec les règles du standard SQL pour les 9212 9211 combinaisons booléennes de valeurs NULL. 9213 9212 </para> 9214 9213 9215 9214 <para> 9216 <token>SOME</token> est un synonyme pour<token>ANY</token>.9215 <token>SOME</token> est un synonyme de <token>ANY</token>. 9217 9216 </para> 9218 9217 </sect2> … … 9225 9224 <para> 9226 9225 Le côté droit est une expression entre parenthèses qui doit renvoyer une 9227 valeur de type tableau. L'expression du côté gauche est évaluée et comparée à9228 chaque élément du tableau en utilisantl'<replaceable>opérateur</replaceable>9229 donnéqui doit renvoyer un résultat booléen. Le résultat de <token>ALL</token>9230 est vrai (<quote>true</quote>) si toutes les comparaisons renvoient vrai (ceci 9231 inclut le cas spécial où le tableaune contient aucun élément). Le résultat est faux9232 (<quote>false</quote>) si un résultat faux est trouvé.9226 valeur de type tableau. L'expression du côté gauche est évaluée et comparée à 9227 chaque élément du tableau à l'aide de l'<replaceable>opérateur</replaceable> 9228 donné, qui doit renvoyer un résultat booléen. Le résultat de <token>ALL</token> 9229 est vrai (<quote>true</quote>) si toutes les comparaisons renvoient vrai (ce 9230 qui inclut le cas spécial du tableau qui ne contient aucun élément). Le résultat est faux 9231 (<quote>false</quote>) si un résultat faux est trouvé. 9233 9232 </para> 9234 9233 9235 9234 <para> 9236 9235 Si l'expression de tableau ramène un tableau NULL, le résultat de 9237 <token>ALL</token> sera NULL. Si l'expression du côté gauche ramène un9236 <token>ALL</token> est NULL. Si l'expression du côté gauche retourne 9238 9237 NULL, le résultat de <token>ALL</token> est habituellement NULL (bien qu'un 9239 opérateur de comparaison non strict p ourrait ramenerun résultat différent).9238 opérateur de comparaison non strict puisse conduire à un résultat différent). 9240 9239 De plus, si le tableau du côté droit contient des éléments NULL et qu'aucune 9241 comparaison true n'est obtenue, le résultat de <token>ALL</token> seraNULL,9242 et non pas true ( encore une fois, en supposantun opérateur de comparaison9243 strict). Ceci est fait en accord avec les règles normales deSQL pour les9240 comparaison false n'est obtenue, le résultat de <token>ALL</token> est NULL, 9241 et non pas true (là aussi avec l'hypothèse d'un opérateur de comparaison 9242 strict). Ceci est en accord avec les règles du standard SQL pour les 9244 9243 combinaisons booléennes de valeurs NULL. 9245 9244 </para> … … 9247 9246 9248 9247 <sect2 id="row-wise-comparison"> 9249 <title>Comparaison sur des lignes complètes</title> 9250 9251 <synopsis><replaceable>constructeur_lignes</replaceable> IS DISTINCT FROM <replaceable>constructeur_lignes</replaceable></synopsis> 9248 <title>Comparaison de lignes entières</title> 9249 9250 <!-- Etrangement, à ce niveau-là, le fichier de traduction contient déjà 300 9251 lignes de plus que la VO... --> 9252 <synopsis><replaceable>constructeur_ligne</replaceable> opérateur <replaceable>constructeur_ligne</replaceable></synopsis> 9252 9253 9253 9254 <para> 9254 Chaque côté est un constructeur de lignes comme décrit dans la <xref9255 Chaque côté est un constructeur de lignes, tel que décrit dans la <xref 9255 9256 linkend="sql-syntax-row-constructors"/>. Les deux valeurs de lignes doivent 9256 avoir le même nombre de lignes. Les comparaisons de lignes sont autorisées 9257 avoir le même nombre de lignes. Chaque côté est évalué. Ils sont alors 9258 comparés sur toute la ligne. Les comparaisons de lignes sont autorisées 9257 9259 quand l'<replaceable>opérateur</replaceable> est 9258 9260 <literal>=</literal>, … … 9260 9262 <literal><</literal>, 9261 9263 <literal><=</literal>, 9262 <literal>></literal> ou9264 <literal>></literal>, 9263 9265 <literal>>=</literal>, 9264 ou a une sémantique similaire a un de ceux-ci. (Pour être spécifique, un opérateur9265 peut être un opérateur de comparaison de ligne s'il est unmembre d'une classe9266 d'opérateur B-Tree ou est le négateur du membre <literal>=</literal> d'une classe9267 d'opérateur B-Tree.)9266 ou a une sémantique similaire à l'un d'eux. (Pour être précis, un opérateur 9267 peut être un opérateur de comparaison de ligne s'il est membre d'une classe 9268 d'opérateurs B-Tree ou est le négateur du membre <literal>=</literal> d'une classe 9269 d'opérateurs B-Tree.) 9268 9270 </para> 9269 9271 9270 9272 <para> 9271 9273 Les cas <literal>=</literal> et <literal><></literal> fonctionnent 9272 légèrement différemment des autres. Les deuxlignes sont9273 considérées égales si leur membres correspondants sont non nulet9274 égaux ; les lignes sont différentes si un des membres correspondants est9275 non nul et différent ; sinonle résultat de la comparaison de ligne est9274 légèrement différemment des autres. Les lignes sont 9275 considérées égales si leurs membres correspondants sont non-nuls et 9276 égaux ; les lignes sont différentes si des membres correspondants sont 9277 non-nuls et différents ; autrement, le résultat de la comparaison de ligne est 9276 9278 inconnu (NULL). 9277 9279 </para> … … 9280 9282 Pour les cas <literal><</literal>, <literal><=</literal>, 9281 9283 <literal>></literal> et <literal>>=</literal>, les éléments de ligne 9282 sont comparés de gauche à droite. La comparaison s'arrête tant que des éléments9283 d ifférents ou NULL sont découverts. Si un des éléments d'une paire est NULL,9284 sont comparés de gauche à droite. La comparaison s'arrête dès qu'une paire 9285 d'éléments différents ou NULL est découverte. Si un des éléments de cette paire est NULL, 9284 9286 le résultat de la comparaison de la ligne est inconnu, donc NULL ; sinon 9285 la comparaison de cette paire d'éléments détermine ntle résultat. Par exemple,9287 la comparaison de cette paire d'éléments détermine le résultat. Par exemple, 9286 9288 <literal>ROW(1,2,NULL) < ROW(1,3,0)</literal> 9287 9289 est vrai, non NULL, car la troisième paire d'éléments n'est pas considérée. … … 9292 9294 Avant <productname>PostgreSQL</productname> 8.2, les cas 9293 9295 <literal><</literal>, <literal><=</literal>, <literal>></literal> 9294 et <literal>>=</literal> n'étaient pas gérés suivant la spécification9296 et <literal>>=</literal> n'étaient pas gérés d'après les spécifications 9295 9297 SQL. Une comparaison comme <literal>ROW(a,b) < ROW(c,d)</literal> 9296 était implémentée comme <literal>a < c AND b < d</literal> alors que9298 était codée sous la forme <literal>a < c AND b < d</literal> alors que 9297 9299 le bon comportement est équivalent à 9298 9300 <literal>a < c OR (a = c AND b < d)</literal>. … … 9300 9302 </note> 9301 9303 9302 <synopsis><replaceable>constructeur_ligne s</replaceable> IS DISTINCT FROM <replaceable>constructeur_lignes</replaceable></synopsis>9304 <synopsis><replaceable>constructeur_ligne</replaceable> IS DISTINCT FROM <replaceable>constructeur_ligne</replaceable></synopsis> 9303 9305 9304 9306 <para> 9305 Cette construction est similaire à une comparaison de ligne s9306 <literal><></literal> mais cela ne ramène pas deNULL pour des9307 entrées NULL. À la place, une valeur NULL est considérée différente9308 (distincte) d e toute valeur nonNULL et deux valeurs NULL sont considérées9309 égales (non distinctes). Du coup, le résultat seratoujours soit9307 Cette construction est similaire à une comparaison de ligne 9308 <literal><></literal>, mais elle ne conduit pas à un résultat NULL pour des 9309 entrées NULL. Au lieu de cela, une valeur NULL est considérée différente 9310 (distincte) d'une valeur non-NULL et deux valeurs NULL sont considérées 9311 égales (non distinctes). Du coup, le résultat est toujours soit 9310 9312 true soit false, jamais NULL. 9311 9313 </para> 9312 9314 9313 9315 <synopsis> 9314 <replaceable>constructeur_ligne s</replaceable> IS NOT DISTINCT FROM <replaceable>constructeur_lignes</replaceable>9316 <replaceable>constructeur_ligne</replaceable> IS NOT DISTINCT FROM <replaceable>constructeur_ligne</replaceable> 9315 9317 </synopsis> 9316 9318 9317 9319 <para> 9318 Cette construction est similaire à une comparaison <literal>=</literal> de 9319 lignes mais elle ne donne pas NULL pour des entrées NULL. À la place, toute 9320 valeur NULL est considérée comme différente d'une valeur non NULL alors 9321 que deux valeurs NULL sont considérées identiques. Du coup, le résultat 9322 sera toujours soit true soit false, mais jamais NULL. 9320 Cette construction est similaire à une comparaison de lignes 9321 <literal>=</literal>, mais elle ne conduit pas à un résultat NULL pour des 9322 entrées NULL. Au lieu de cela, une valeur NULL est considérée différente 9323 (distincte) d'une valeur non NULL et deux valeurs NULL sont considérées 9324 identiques (non distinctes). Du coup, le résultat 9325 est toujours soit true soit false, jamais NULL. 9323 9326 </para> 9324 9327 … … 9327 9330 9328 9331 <sect1 id="functions-srf"> 9329 <title>Fonctions re nvoyant des ensembles</title>9332 <title>Fonctions retournant des ensembles</title> 9330 9333 9331 9334 <indexterm zone="functions-srf"> 9332 <primary>fonctions re nvoyant des ensembles</primary>9335 <primary>fonctions retournant des ensembles</primary> 9333 9336 <secondary>fonctions</secondary> 9334 9337 </indexterm> … … 9338 9341 </indexterm> 9339 9342 9343 <!-- Joli contresens :-) 9344 et générer N'est PAS français --> 9340 9345 <para> 9341 9346 Cette section décrit des fonctions qui peuvent renvoyer plus d'une 9342 9347 ligne. Actuellement, les seules fonctions dans cette classe sont les 9343 séries générant des fonctions, comme détaillédans le <xref9348 les fonctions de génération de séries, détaillées dans le <xref 9344 9349 linkend="functions-srf-series"/>. 9345 9350 </para> 9346 9351 9347 9352 <table id="functions-srf-series"> 9348 <title> Séries générant des fonctions</title>9353 <title>Fonctions de génération de séries</title> 9349 9354 <tgroup cols="4"> 9350 9355 <thead> … … 9359 9364 <tbody> 9360 9365 <row> 9361 <entry><literal><function>generate_series</function> 9362 (<parameter>début</parameter>, 9363 <parameter>fin</parameter>)</literal></entry> 9366 <entry><literal><function>generate_series</function>(<parameter>début</parameter>, <parameter>fin</parameter>)</literal></entry> 9364 9367 <entry><type>int</type> ou <type>bigint</type></entry> 9365 9368 <entry><type>setof int</type> ou <type>setof bigint</type> 9366 (même type qu 'enargument)</entry>9369 (même type que l' argument)</entry> 9367 9370 <entry> 9368 Génère une série de valeurs, commençant à 9369 <parameter>début</parameter> pour finir à 9370 <parameter>fin</parameter> 9371 avec un incrément de un. 9371 Produit une série de valeurs, de <parameter>début</parameter> à 9372 <parameter>fin</parameter> avec un incrément de un. 9372 9373 </entry> 9373 9374 </row> 9374 9375 9375 9376 <row> 9376 <entry><literal><function>generate_series</function> 9377 (<parameter>début</parameter>, <parameter>fin</parameter>, 9378 <parameter>étape</parameter>)</literal></entry> 9377 <entry><literal><function>generate_series</function>(<parameter>début</parameter>, <parameter>fin</parameter>, <parameter>pas</parameter>)</literal></entry> 9379 9378 <entry><type>int</type> ou <type>bigint</type></entry> 9380 9379 <entry><type>setof int</type> ou <type>setof bigint</type> 9381 (même type qu 'enargument)</entry>9380 (même type que l'argument)</entry> 9382 9381 <entry> 9383 Génère une série de valeurs, commençant à 9384 <parameter>début</parameter> pour finir à 9385 <parameter>fin</parameter> avec un incrément de 9386 <parameter>étape</parameter>. 9382 Produit une série de valeurs, de <parameter>début</parameter> à 9383 <parameter>fin</parameter> avec un incrément de <parameter>pas</parameter>. 9387 9384 </entry> 9388 9385 </row> … … 9393 9390 9394 9391 <para> 9395 Quand <parameter> étape</parameter> est positif, aucune ligne n'est9396 renvoyée si <parameter>début</parameter> est plus grand que9397 <parameter>fin</parameter>. Au contraire, quand9398 <parameter> étape</parameter> est négatif, aucune ligne n'est renvoyée9399 si <parameter>début</parameter> est plus petit que9392 Quand <parameter>pas</parameter> est positif, aucune ligne n'est 9393 renvoyée si <parameter>début</parameter> est supérieur à 9394 <parameter>fin</parameter>. À l'inverse, quand 9395 <parameter>pas</parameter> est négatif, aucune ligne n'est renvoyée 9396 si <parameter>début</parameter> est inférieur à 9400 9397 <parameter>fin</parameter>. De même, aucune ligne n'est renvoyée pour 9401 les entrées <literal>NULL</literal>. Si <parameter>étape</parameter> 9402 vaut zéro, c'est considéré comme une erreur. Quelques exemples 9403 suivent : 9398 les entrées <literal>NULL</literal>. Une erreur est levée si 9399 <parameter>pas</parameter> vaut zéro. 9400 </para> 9401 9402 <para> 9403 Quelques exemples : 9404 9404 <programlisting>select * from generate_series(2,4); 9405 9405 generate_series … … 9433 9433 </sect1> 9434 9434 9435 <!-- ICI --> 9435 9436 <sect1 id="functions-info"> 9436 9437 <title>Fonctions d'information sur le système</title>

