lundi 2 mars 2009

Fonction T-SQL pour scinder une chaîne de caractères en table

La fonction suivante (pour Microsoft SQL Server) permet de découper une chaîne de caractères selon un délimiteur quelconque (qui peut être passé en argument) et retourne une table contenant une ligne pour chacune des valeurs scindées.

Cela permet donc, par exemple, de prendre un paramètre dans une procédure stockée de type "varchar(MAX)" comportant une chaîne de caractères avec des valeurs séparées par une virgule, et de découper chacune de ces valeurs pour les utiliser dans une liste "IN ( )" d'une clause "WHERE".

Voici le code de la fonction :
CREATE FUNCTION Split
(
@Delimiter varchar(5),
@List varchar(MAX)
)
RETURNS @TableOfValues table
(
RowID int IDENTITY(1,1),
[Value] varchar(MAX)
)
AS
BEGIN
DECLARE @LenString int

SET @List = LTRIM(RTRIM(@List))

WHILE LEN(@List) > 0
BEGIN
SELECT @LenString =
(CASE CHARINDEX(@Delimiter, @List)
WHEN 0 THEN LEN(@List)
ELSE (CHARINDEX(@Delimiter, @List) - 1)
END)

INSERT INTO @TableOfValues
SELECT SUBSTRING(@List, 1, @LenString)

SELECT @List =
(CASE (LEN(@List) - @LenString)
WHEN 0 THEN ''
ELSE RIGHT(@List, LEN(@List) - @LenString - 1)
END)
END
RETURN
END
Voici maintenant le code d'un exemple d'utilisation de cette fonction :
DECLARE @Table table
(
TableID int
)

INSERT INTO @Table VALUES ('12'),('34'),('56'),('78'),('90')

DECLARE @List varchar(MAX)
SET @List = '12,34,56,78,90'

SELECT * FROM @Table
WHERE TableID IN (SELECT CAST(Value AS int) FROM Split(',', @List))

dimanche 1 mars 2009

Windows 7 disponible dès cet automne

Il semblerait que le nouveau système d'exploitation de Microsoft qui doit remplacer Windows Vista, soit Windows 7, sera disponible dès le début de l'automne prochain (fin septembre-début octobre) en version définitive selon plusieurs sites Web faisant mention qu'un important partenaire de Microsoft (Compal; un assembleur taïwanais qui construit des ordinateurs portatifs pour Acer et HP) aurait affirmé à ses investisseurs que la nouvelle version serait mise en vente à cette période. Microsoft n'aurait pas nié l'information.

Pour plus de détails : PC INpact

Selon moi, cette version aurait dû être un Service Pack de Windows Vista afin d'éviter de faire payer une nouvelle version à la très grande majorité des utilisateurs qui voudront certainement remplacer Vista sur leurs ordinateurs pour libérer les ressources utilisées en trop par celui-ci.

De plus, Windows 7 ressemble beaucoup à Windows Vista en terme de fonctionnalités et côté apparence (outre peut-être l'UAC moins invasif et plus raffiné). Il s'agit donc surtout d'une amélioration au niveau de la performance, de la stabilité et de la compatibilité du système, ce qui aurait justifié une simple mise à jour gratuite de Vista à mon point de vue.

Peut-être que Microsoft souhaitait faire oublier le nom "Vista" en espérant avoir plus de chance avec le "7 chanceux" de Windows 7? Ou serait-ce pour respecter l'échéancier convenu d'environ 3 ans entre deux versions de Windows afin de ne pas répéter l'erreur du délai entre la sortie de Windows XP et Vista?

En passant, le système d'exploitation pour serveur Windows Server 2008 est en grande partie basé sur le noyau de Vista, mais plusieurs fonctionnalités qui demandent beaucoup de ressources système sont désactivées par défaut ou tout simplement absentes.

Personnellement, je trouve que le système d'exploitation Windows Vista (et ses dérivés) se comporte tout de même très bien en général. Le principal problème de celui-ci, c'est qu'il demande une machine relativement puissante et récente afin de fonctionner de façon aussi réactive que Windows XP par exemple. De plus, cette charge excessive du système limite la quantité de ressources disponibles pour les autres applications.

À suivre...