zoukankan      html  css  js  c++  java
  • (SQL)比较一个集合是否在另一个集合里存在的方法

    DECLARE @c INT
    DECLARE @c2 INT
    SELECT  @c = COUNT(1)
    FROM    dbo.SplitToTable('1|2|3|4', '|')
    SELECT @c2=COUNT(1)
    FROM    dbo.SplitToTable('1|2|3|4', '|') a
            INNER JOIN dbo.SplitToTable('1|2|3|', '|') b ON a.value = b.value
    IF @c = @c2
             SELECT  'ok'
      ELSE
    SELECT 'no'

     

    SplitToTable这个函数如下:

    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go

    ALTER FUNCTION [dbo].[SplitToTable]
        (
          @SplitString NVARCHAR(MAX) ,
          @Separator NVARCHAR(10) = ' '
        )
    RETURNS @SplitStringsTable TABLE
        (
          [id] INT IDENTITY(1, 1) ,
          [value] NVARCHAR(MAX)
        )
    AS
            BEGIN
                DECLARE @CurrentIndex INT ;
                DECLARE @NextIndex INT ;
                DECLARE @ReturnText NVARCHAR(MAX) ;
                SELECT  @CurrentIndex = 1 ;
                WHILE ( @CurrentIndex <= LEN(@SplitString) )
                    BEGIN
                        SELECT  @NextIndex = CHARINDEX(@Separator, @SplitString,
                                                       @CurrentIndex) ;
                        IF ( @NextIndex = 0
                             OR @NextIndex IS NULL
                           )
                            SELECT  @NextIndex = LEN(@SplitString) + 1 ;
                        SELECT  @ReturnText = SUBSTRING(@SplitString,
                                                        @CurrentIndex,
                                                        @NextIndex - @CurrentIndex) ;
                        INSERT  INTO @SplitStringsTable
                                ( [value] )
                        VALUES  ( @ReturnText ) ;
                        SELECT  @CurrentIndex = @NextIndex + 1 ;
                    END
                RETURN ;
            END

  • 相关阅读:
    [数分提高]2014-2015-2第6教学周第2次课(2015-04-09)
    牛吃草问题
    [家里蹲大学数学杂志]第395期中科院2015年高校招生考试试题
    PostreSQL崩溃试验全记录
    EnterpriseDb公司的Postgres Enterprise Manager 安装图解
    EnterpriseDB公司的 Postgres Solution Pack (一)
    PostgreSQL调整内存与IO的参数说明
    查内存命令之free
    PPAS通过DBLink,访问Oracle数据库
    PPAS的MTK tool 工具使用说明
  • 原文地址:https://www.cnblogs.com/lori/p/2245489.html
Copyright © 2011-2022 走看看