我是SQL新手。我有這個工作的SQL函數,但我想用逗號連接結果,如果結果爲空,不會留下無關的逗號。我與COALESCE玩過一段時間,但我無法完成它的工作。任何線索或幫助都會很棒。T-SQL用逗號連接VarChar
在Python我這樣做:
'abcdef'.join(', ')
這是現在的SQL函數:
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
推測這應該被標記爲SQL Server。請添加此標籤(如果您使用不同的RDBMS,請添加此標籤)。另外,我強烈建議*不要這樣做。 SQL Server *具有*非常適合存儲多個值的數據類型。它被稱爲表格。如果您使用所提供的類型,則您會發現查詢更易於編寫,並且可能執行得更好。 – 2013-04-24 06:23:45
您需要刪除結果中的前導逗號? – TechDo 2013-04-24 06:27:31
@techdo是的,沒錯。 – MFB 2013-04-24 06:30:38