Une fonction de dépouillement d’une chaîne de valeurs séparées par des virgules

Je vous propose ici une fonction en pur T-SQL qui permet de retourner les valeurs que l’on trouve entre les virgules d’une chaîne en contenant un plus ou moins grand nombre.

Celle-ci repose sur une table de nombres, ce qui permet d’éviter de boucler par un WHILE, qui s’avère être contre-performant, SQL n’étant pas un langage itératif.
Lire la suite

Trouver le premier et le dernier jour de la semaine, du mois, du trimestre, et autre calculs

Beaucoup de participants au forum SQL Server se compliquent la vie avec des calculs bizarres, à trouver le premier ou dernier jour d’un index temporel, comme celui d’une semaine, d’un mois, ou d’un trimestre.

Ces calculs se font souvent à base d’extractions de sous-chaînes après avoir converti une date en varchar(n), et on aboutit donc à des choses abominables.

Voici donc une série de calculs de valeurs, uniquement à base de fonctions de date …
Oui, les dates se manipulent avec des fonctions de date, et non pas avec des fonctions de chaîne !

J’en profite au passage pour rappeler mon billet sur le choix des types de données

Lire la suite

Utiliser le type TABLE avec SQL Server 2008

Il est parfois nécessaire de créer un curseur pour exécuter une procédure stockée sur chacune des lignes du curseur, en passant en paramètre les valeurs des colonnes de la requête qui spécifie le curseur.
SQL Server 2008 a introduit le type TABLE, qui permet de spécifier par un type des variables de type TABLE.
Cette solution est une alternative moins pire que le curseur : voyons comment l’utiliser (avec modération !)
Lire la suite