Analyse & Programmation
Détails dans une colonne
Saviez-vous quand T-SQL vous pouvez ramener les détails sous une même colonne.
Cela est possible en combinant FOR XML PATH et STUFF. J'en ai eu besoin l'autre jour et je vous donne le truc ici au cas ou vous voudriez l'utiliser.
Supposons que nous avons une table de province.
create table province
(
abbrev char(2),
nom varchar(30)
);
insert into province (abbrev, nom) values ('QC', 'Québec');
insert into province (abbrev, nom) values ('ON', 'Ontarion');
insert into province (abbrev, nom) values ('AB', 'Alberta');
Pour simplifier, je n'ai ajouté que trois provinces.
En utilisant la un select FOR XML PATH, vous obtenez un arbre SQL représentant le résult de la requête mais en XML.
select abbrev from province FOR XML PATH
Vous obtenez alors le résultat suivant:
'<row><abbre>QC</abbrev></row><row><abbre>ON</abbrev></row> <row><abbre>AB</abbrev></row>'
C'est bien un arbre XML. Maintenant, on peut enlever les étiquettes "row" en ajoutant '' entre parenthèse à PATH. Voici ce que ça donne.
select abbrev from province FOR XML PATH('')
'<abbre>QC</abbrev><abbre>ON</abbrev><abbre>AB</abbrev>'
Ensuite, pour remplacer les étiquettes restantes par un autre caractère comme ',' par exemple, il suffit de l'ajouter en avant du champs comme suit:
select ',' + abbrev from province FOR XML PATH('')
',QC,ON,AB'
Il ne reste plus qu'à éliminier le premier ',' devant pour faire propre. C'est là que STUFF entre en jeu. C'est une fonction pour remplacer une chaîne de caractère par une autre.
select stuff((select ',' + abbrev from province for xml path('')), 1, 1, '')
'QC,ON,AB'
Et voilà, le tour est joué.
Mis à jour (Jeudi, 29 Juillet 2010 16:59)
L'évaluateur d'échecs
L'évaluateur est un peu comme la personnalité de votre moteur. C'est cette partie qui déterminera comment va réellement jouer votre moteur. Je parle du style pas nécessairement de sa force. Biensûr, si vous n'avez presque pas de connaissance du jeu d'échecs, il vous sera difficile de faire un moteur potable. Pour l'écrire, il faut un minimum de connaissance du jeu.
Mis à jour (Jeudi, 29 Juillet 2010 17:01)
Monik termine sixièmeMonik a terminé sixième dans un tournoi de moteurs d'échecs amateurs. Pour voir les résultats, cliquez ici. Monik a joué dans la section Promo. Merci à Olivier Deville pour ce tournoi. Sylvain
Mis à jour (Mardi, 12 Janvier 2010 19:57) Pourquoi orientée objet?IntroductionIl est normal de se poser la question avant d'investir du temps et de l'argent dans l'apprentissage d'une nouvelle manière d'analyser et de programmer. Avant d'écrire cette article, j'ai fait une recherche sur google pour voir ce que d'autre avait à répondre à cette question. J'ai trouvé soit des questions sans réponse ou soit des exemples avec du code pour tenter de nous faire voir que c'est mieux. J'ai vraiment pas trouvé grand chose. Bon, peut-être que je n'ai pas cherché assez longtemp. Mais, je vais quand même tenter d'y répondre ici.
Mis à jour (Mardi, 08 Décembre 2009 06:50)
MS-SQL calendrier dynamiqueMS-SQL calendrier dynamique
Comment créer un calendrier dynamique dans la langue de son choix, remplir une table calendrier ou utiliser une table de dimension calendrier dans un entrepôt de données. Mis à jour (Lundi, 19 Octobre 2009 17:31)
|