【问题标题】:How to get distinct in a variable如何在变量中变得不同
【发布时间】:2018-01-10 15:59:14
【问题描述】:

如何区分变量

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

【问题讨论】:

  • 将其循环到一个表变量中,然后对该表变量进行不同的查询。
  • 想在表变量中取那个值

标签: sql sql-server sql-server-2008 plsql sql-server-2012


【解决方案1】:

分三步完成

  1. 将逗号分隔的值拆分为单独的行
  2. 在第 1 步应用 distinct
  3. 将结果连接回逗号分隔值

查询链接

第一步:Turning a Comma Separated string into individual rows

第二步:从上面的结果中选择Distinct

第三步:Simulating group_concat MySQL function in Microsoft SQL Server 2005?

【讨论】:

    【解决方案2】:

    【讨论】:

    • 链接过时了。你能总结一下解决方案吗?
    【解决方案3】:

    这是使用内存表解决此问题的解决方案。

        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))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-22
      • 2020-07-30
      • 1970-01-01
      • 2018-12-13
      • 2018-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多