OK, le titre de la question est vague, mais voici le problème. J'ai une liste de noms de fichiers dans la première colonne d'une table appelée Fichiers dont je veux analyser les données qui sont délimitées par soulignement, mais parfois je veux sauter le trait de soulignement. Chaque nom de fichier est sous forme de:Utilisation de délimiteurs pour diviser une colonne dans T-SQL en ignorant les délimiteurs
distance1000_7_13_2010_1_13PM_AveryDennisonAD_2300008_10S_Lock.csv
Ainsi, afin d'obtenir la date et l'heure, je veux diviser cette colonne sous la forme suivante:
Col_A = distance1000
Col_B = 7_13_2010
Col_C = 1_13PM
Col_D = AveryDennisonAD
Col_E = 2300008
Col_F = 10S
Col_G = Lock.csv
Si je pouvais tronquer le. csv off de Col_G, ce serait bien aussi, bien que ce ne soit pas nécessaire. Voici le code que j'ai jusqu'à présent où Col_B et Col_C des dates et heures ne sont pas correctement analysés:
DECLARE @RowCount INT, @I INT
SET @RowCount = (SELECT COUNT(FileName) FROM Files)
SET @I = 1
WHILE (@I <= @RowCount)
BEGIN
DECLARE @FileName VARCHAR(1000)
SELECT @FileName = FileName FROM Files WHERE FileID = @I
UPDATE Files
SET Col_A = dbo.fnSplit(@FileName, '_', 1),
Col_B = dbo.fnSplit(@FileName, '_', 2),
Col_C = dbo.fnSplit(@FileName, '_', 3),
Col_D = dbo.fnSplit(@FileName, '_', 4),
Col_E = dbo.fnSplit(@FileName, '_', 5)
--etc.etc.
WHERE FileID = @I
SET @I = @I + 1
END
Comment puis-je modifier les instructions SET afin de « sauter » le délimiteur parfois (et de l'inclure dans la nouvelle colonnes) et d'utiliser le délimiteur de soulignement pour diviser les colonnes à d'autres moments?
J'espère que c'est clair. Merci d'avance!
Maintenant, pourquoi n'y ai-je pas pensé plus tôt? Merci Ed, c'est exactement ce que je veux! Je suppose que je pensais trop compliqué. De plus, j'utiliserai des noms différents, je suppose que je ne faisais que poster un exemple de code juste pour être clair sur ce dont je parlais. Merci! –