Vous êtes ici :
SQL Server 2016 nous a apporté la fonction STRING_SPLIT, bien pratique pour tabulariser une liste avec séparateurs. Avant SQL Server 2016, on peut utiliser la fonction suivante pour faire le même travail (mais avec de moins bonnes performances)
Transact-SQL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
/*------------------------------------------------------------------- [SCRIPT] table function string_split replacement [DATEMAJ] 20191227 -------------------------------------------------------------------*/ CREATE FUNCTION fnSplitString(@str varchar(max),@sep varchar(1)) RETURNS TABLE AS RETURN WITH a AS( SELECT CAST(0 AS BIGINT) as pos1,CHARINDEX(@sep,@str) pos2 UNION ALL SELECT pos2+1,CHARINDEX(@sep,@str,pos2+1) FROM a WHERE pos2>0 ) SELECT SUBSTRING(@str,pos1,COALESCE(NULLIF(pos2,0),LEN(@str)+1)-pos1) as value FROM a |
SQL Server 2019 offre en plus la fonction STRING_AGG, qui fait l’opération inverse. Solution avant SQL Server 2019 avec l’utilisation d’une sous-requête et XML PATH, à lire sur : http://blog.datafly.pro/post/G%C3%A9rer-des-listes-avec-s%C3%A9parateur-virgule
Table of Contents