T-SQL concaténer VarChar avec une virgule

Je suis nouveau à SQL. J'ai cette fonction SQL de travail, mais je voudrais joindre les résultats avec une virgule d'une manière qui ne laisse aucune virgule étrangère si le résultat est vide. J'ai joué avec COALESCE mais je n'ai pas réussi à le faire fonctionner. Des indices ou de l'aide seraient géniaux.

En Python, je ferais ceci:

'abcdef'.join(', ') 

Voici la fonction SQL maintenant:

 USE [Broadcast] GO /****** Object: UserDefinedFunction [dbo].[MapConsumerAdvice] Script Date: 04/24/2013 14:49:10 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <Author,,Name> -- Create date: <Create Date, ,> -- Description: <Description, ,> -- ============================================= ALTER FUNCTION [dbo].[MapConsumerAdvice] ( @A as Int, @B as Int, @C as Int, @D as Int, @E as Int, @F as Int, @G as Int, @H as Int ) RETURNS VarChar(20) AS BEGIN DECLARE @Result as VarChar(999) SET @Result = '' IF (@A > 0) SET @Result = @Result + ',' + 'a' IF (@B > 0) SET @Result = @Result + ',' + 'd' IF (@C > 0) SET @Result = @Result + ',' + 'h' IF (@D > 0) SET @Result = @Result + ',' + 'l' IF (@E > 0) SET @Result = @Result + ',' + 'm' IF (@F > 0) SET @Result = @Result + ',' + 'n' IF (@G > 0) SET @Result = @Result + ',' + 's' IF (@H > 0) SET @Result = @Result + ',' + 'v' Return @Result END 

Essayer

 RETURN SUBSTRING(@Result, 2, LEN(@Result)) 

ou

 RETURN RIGHT(@Result, LEN(@Result)-1) 

au lieu de Return @Result

Vous devez vérifier si quelque chose a été assigné.

 USE [Broadcast] GO /****** Object: UserDefinedFunction [dbo].[MapConsumerAdvice] Script Date: 04/24/2013 14:49:10 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <Author,,Name> -- Create date: <Create Date, ,> -- Description: <Description, ,> -- ============================================= ALTER FUNCTION [dbo].[MapConsumerAdvice] ( @A as Int, @B as Int, @C as Int, @D as Int, @E as Int, @F as Int, @G as Int, @H as Int ) RETURNS VarChar(20) AS BEGIN DECLARE @Result as VarChar(999) SET @Result = '' IF (@A > 0) SET @Result = @Result + ',' + 'a' IF (@B > 0) SET @Result = @Result + ',' + 'd' IF (@C > 0) SET @Result = @Result + ',' + 'h' IF (@D > 0) SET @Result = @Result + ',' + 'l' IF (@E > 0) SET @Result = @Result + ',' + 'm' IF (@F > 0) SET @Result = @Result + ',' + 'n' IF (@G > 0) SET @Result = @Result + ',' + 's' IF (@H > 0) SET @Result = @Result + ',' + 'v' IF PATINDEX(',%', @Result) > 1 Set @Result = SUBSTRING(@Result, 2, LEN(@Result)); Return @Result END 

append le code ci-dessous à la fin de la fonction,

 RETURN REPLACE(@result,',,',',')