SQL 比較一個集合是否在另一個集合里存在的方法分享
更新時間:2011年11月15日 23:51:07 作者:
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
相關文章
將備份的SQLServer數據庫轉換為SQLite數據庫操作方法
怎樣將備份的SQLServer數據庫轉換為SQLite數據庫操作方法:先要安裝好SQLServer2005,并且記住安裝時自己設置的用戶名和密碼,感興趣的朋友可以參考下啊,或許本文對你有所幫助2013-02-02SQL?Server如何設置用戶只能訪問特定數據庫和訪問特定表或視圖
最近項目中需要限定特定的用戶只能查看并訪問特定的數據庫,防止多個用戶對數據庫操作時一些誤操作,所以這篇文章主要給大家介紹了關于SQL?Server如何設置用戶只能訪問特定數據庫和訪問特定表或視圖的相關資料,需要的朋友可以參考下2023-04-04Sql Server中一個表2個字段關聯同一個表(代碼解決)
Sql Server中一個表2個字段關聯同一個表(代碼解決),需要的朋友可以參考一下2013-02-02