Nouveautés V4R50 de DB2/400

BoTTom |   
 
 nouveautés SQL liées à la version 4.50
 
 
 + nouveau type de données BIGINT (entier binaire, sur 8 octets)
 
 + nouvel outil sous Operation Navigator
 
   Visual Explain qui montre graphiquement les détails donnés par
    l'optimiseur, pour une requête SQL.
 
 + possibilité de créer des procédures cataloguées externes faisant
    référence à une classe JAVA.
 
 + les expressions sont admises sur l'ordre INSERT ... VALUES( ) .
 
 + ordres du SQL/PSM nouveaux ou modifiés :
 
         SIGNAL et RESIGNAL
          clause GET DIAGNOSTIC
         RETURN et GOTO
 


|   
 
  + nouvelles fonctions :
 
    BIGINT, RAND, CEIL, ROUND, TRUNCATE, SIGN, SOUNDEX et DIFFERENCE
 
 
   détail
   ------
 
    BIGINT(colonne)   Transforme en binaire sur 8 octets une expression
                        numérique ou une chaîne valide.
       [CAST est, lui aussi, modifié en conséquence]
 
    SIGN(colonne)     retourne le signe d'une colonne
                       -1 si négatif, 1 si positif strictement, 0 si null
 
    RAND()            retourne un nombre aléatoire (< à 1)
 
    CEIL(colonne)     Transfortme un réel (avec décimales) en son entier
                       immédiatement suppérieur.
 
                       CEIL(2,42) = 3        CEIL(2,56) = 3


|   
 
     ROUND(colonne,p)    arrondi comptable d'une expression numérique
                          avec choix de la precision.
 
                       ROUND(2,42 , 1) = 2,40     ROUND(2,56 , 1) = 2,60
 
     TRUNCATE(colonne,p) arrondi inférieur d'une expression numérique
                          avec choix de la precision.
 
                       TUNCATE(2,42 , 1) = 2,40   TRUNCATE(2,56 , 1) = 2,50
 
     SOUNDEX(colonne)    fourni un algoritme retournant une représentation
                          phonétique de "colonne" (surtout les noms propres)
                            permettant de meilleurs comparaisons
 
     Ce codage a été utilisé aux états-unis lors de recensements
 
     voir http://www.bradandkathy.com/genealogy/overviewofsoundex.html
     et   http://www.nara.gov/genealogy/soundex/soundex.html
 
   s'utilise sous la forme:
               WHERE SOUNDEX(NOM) = SOUNDEX('HENRI')       [=H560]


|   
 
 l'algoritme est le suivant  :
 
    1/ conversion en majuscule
 
    2/ conservation du premier caractère
 
    3/ suppression de toutes les occurences des lettres dont la liste suit,
        à partir de la première occurence:
 
       A, E, H, I, O, U, W, Y
 
 
    4/ attribution d'un code numérique, suivant le type de lettre
       (labiale, dentale, ....)
 
       1 pour B F V P                   4 pour L
       2  "   C G J K Q S X Z           5  "   M N
       3  "   D T                       6  "   R
 
    (cette série est donnée pour l'anglo-américain, pour l'adaptation
      fançaise voir http://www.chez.com/algor/soundex/soundex.htm )


|   
 
    5/ élimination de toutes les paires consécutives de chiffres dupliqués.
 
    6/ ne conserver de la chaîne que les quatres premières positions
       (complétées par des "0", si besoin)
 
       sous la forme Lccc   L étant la première lettre [ cf 2/ ]
                            ccc étant le résultat produit en 6/
 
 
    ainsi SOUNDEX('troi')  retourne T600 , SOUNDEX('Troye') aussi.
 
    mais  SOUNDEX('trois') retourne T620
                                 ce qui, en français, est un problème.
 
  Le lab précise qu'il n'y a pas d'adaptation langage de l'algorithme.
 
    DIFFERENCE(col1 , col2) indique la différence phonétique (de 0 à 4)
                             basée sur SOUNDEX, entre les deux arguments.
 
                            0: les deux arguements sont trés différents
                            4: ils sont très semblables.





©AF400