2017-08-03 117 views
-2

如何獲得不同的變量如何獲得不同的變量

Declare @var Nvarchar (500) 

SELECT @var = 'EQUITY,EQUITY,EQUITY,EQUITY,EQUITY,EQUITY,EQUITY,DEBT,DEBT,DEBT,DEBT,DEBT,DEBT, 
DEBT,DEBT,DEBT,DEBT,DEBT,DEBT' 

SELECT DISTINCT @var 
+0

將其循環到一個表變量中,然後清除查詢該表變量。 – KtX2SkD

+0

想要在表變量中取這個值 – Asad

回答

0

這是一個solvin解決方案g使用內存表中的這個問題。

DECLARE @var NVARCHAR(500) 
    SELECT @var = 'EQUITY,EQUITY,EQUITY,EQUITY,EQUITY,EQUITY,EQUITY,DEBT,DEBT,DEBT,DEBT,DEBT,DEBT,DEBT,DEBT,DEBT,DEBT,DEBT,DEBT' 

    DECLARE @tempTable TABLE (items NVARCHAR(500)) 
    DECLARE @distinctTable TABLE (items NVARCHAR(500)) 
    DECLARE @delimiter CHAR(1) = ',' --- Specify the delimiter 
    DECLARE @idx INT  
    DECLARE @section NVARCHAR(500)  
    DECLARE @ouput NVARCHAR(500) 

    SELECT @idx = 1  
     IF LEN(@var)<1 OR @var IS NULL RETURN  

    WHILE @idx!= 0  
    BEGIN  
     SET @idx = CHARINDEX(@delimiter,@var)  
     IF @idx!=0  
      SET @section = LEFT(@var,@idx - 1)  
     ELSE  
      SET @section = @var  

     IF(LEN(@section)>0) 
      INSERT INTO @tempTable(Items) VALUES(@section)  

     SET @var = RIGHT(@var,LEN(@var) - @idx)  
     IF LEN(@var) = 0 BREAK  
    END 

    INSERT @distinctTable (items) 
    SELECT DISTINCT * FROM @tempTable 

    SET @ouput = '' 
    SELECT @ouput = @ouput + items + @delimiter FROM @distinctTable 
    SELECT SUBSTRING(@ouput, 0, LEN(@ouput))