lundi 11 avril 2011

Sql Serveur - Manipulation avancée de chaine de caratère (string) en TSQL

Il y a quelques années j'avais découvert deux articles abordant le traitement des chaînes de caractères en TSQL. Sql Serveur étant relativement pauvre en ce domaine j'avais immédiatement classé l'information sous le libellé "merveille à ne surtout pas perdre"... pourtant, au fil du temps, je réussis finalement à perdre ces références (Arghhh!!!).
Le hasard aura voulut que je retombe dessus... et cette fois, je vais faire ce qu'il faut pour ne pas les perdre à nouveau... je vais publier ces références.
Au passage, je vais également traduire l'introduction de Robyn Page and Phil Factor, les auteurs de ces deux articles.

Je vous invite d'ailleurs à prendre connaissance des autres articles édités par Robyn Page and Phil Factor [on y trouve en autre un article expliquant comment manipuler une feuille Excel :) ]

Introduction
Traduction "at the best" de l'introduction de l'article "SQL String User Function Workbench".

Nous allons vous présenter quelques-unes des très simples fonctions de manipulation de string.
Plutôt que d'inventer ceux que nous voudrions, nous allons aborder le problème sous un angme différent et implémenter, au mieux, les fonctions Python de manipulation de chaîne de caractères.
Plein d'exemples maus aussi quelques astuces de programmation !
Quelque-fois, lors de développement d'application Sql Serveur, vous commencez à avoir besoin de manipuler des chaînes de caractères. Pour un débutant, ces fonctions SQL de manipulation peuvent sembler particulièrement ingrates – rien à voir avec ce qui est disponible en Python dans le même domaine.
Cette différence c'est plutôt une question de style. Les fonctions de bases disponible en TSQL sont d'une grande puissance, et il n'est pas toujours évident de comprendre ce qu'elles font lorsque l'on insecte le code. Personne n'essayerait de prétendre que la fameuse function STUFF est intuitive.
Lorsque l'on met en place un projet DB, il est toujours préférable de commencer avec une boîte à outils (toolkit) reprennant des fonctions élémentaire de traitement de chaîne de caractère, cela rendra votre TSQL code lisible. C'est seulement lorsque l'on rencontrera des problèmes de performance particulier qu'il sera nécessaire d'utiliser les fonction de bases plutôt que celles de la boite à outils.
Dans l'effervescence d'une équipe de développement, les choses semblent mieux se présenter si des fonctions élémentaires de traitement de chaîne de caractères sont disponibles et prêtent à l'emploi.
Sans raison particulières, nous aimons utiliser les fonctions de manipulation de chaîne de caractères de PHP et Python adaptés à l'usage de SQL Serveur.
 

Références
Voici donc une liste d'articles totalement incontournables dans ce domaine.
On y trouvera du code vraiment très précieux ainsi que les explications les concernant.
Code source
Liste des fonctions
Dans le premier article, l'on retrouvera la définition des fonctions suivantes:
   1. Capitalize
   2. Center
   3. Count Substring in String
   4. EndsWith
   5. ExpandTabs
   6. IsAlnum
   7. IsAlpha
   8. IsDigit
   9. IsLower
  10. IsTitle
  11. IsSpace
  12. LJust
  13. LStrip
  14. RFind
  15. RJust
  16. RStrip
  17. Strip
  18. SwapCase
  19. Title
  20. Zfill


Tandis que le deuxième article abordera des fonctions nettement plus avancées telles que:
   1. Split function
   2. SplitLines
   3. Within (not from python)
   4. EndsWith
   5. StartsWith
   6. Contains (not from python)
   7. Join
   8. Parts (not from python)
   9. Partition
  10. RPartition

Le troisième article abordant le traitement des arrays (php) aborde déclare les fonctions suivantes:
  • The array() function
  • The PHP-style str_Replace() function
  • The str_Find function
  • The str_GetDelimited function
Finalement, l'article consacré à l'utilisation des régulars expression en TSQL aborde les points suivants:
   1. Introduction
   2. The OLE Functions
         1. The OLE Regex Match function
         2. The OLE Regex Replace function
         3. The OLE Regex Find (Execute) function
   3. Combining two Regexs
   4. OLE Regex Performance

Aucun commentaire: