我有一個函數可以得到兩個ID列表,我想要返回差異計數。如果兩個列表相等,則爲0,否則爲計數。T-SQL獲得兩個表之間差異的計數
這我會叫:
SELECT [dbo].[Redline_compareBaseProjSuccessors]
('2498,2502,2510,2521,2841',
'2498,2502,2510,2521,2532,2820,2841') as isDifferent
我的作用是:
ALTER FUNCTION [dbo].[Redline_compareBaseProjSuccessors] (@projSuccessors varchar,@baseSuccessors varchar)
RETURNS int
AS
BEGIN
DECLARE @proj_assignment_ids TABLE (obj_id int)
DECLARE @base_assignment_ids TABLE (obj_id int)
DECLARE @is_different int
INSERT INTO @base_assignment_ids
SELECT base_assignment_id as obj_id
FROM base_assignment
WHERE base_assignment_id IN (@baseSuccessors)
INSERT INTO @proj_assignment_ids
SELECT base_assignment_id AS obj_id
FROM proj_assignment
WHERE proj_assignment_id IN (@projSuccessors)
SELECT @is_different = Count(obj_id)
FROM @base_assignment_ids
WHERE obj_id NOT IN (SELECT obj_id FROM @proj_assignment_ids)
RETURN @is_different
END
的@base_assignment_ids
價值爲:2498,2502,2510,2521,2841,2532,2820
和@proj_assignment_ids
= 2498,2502,2510,2521,2841
的價值,所以我期望作爲回報價值,但我得到
出了什麼問題?
如果要創建的2個逗號分隔字符串可能是更爲有效的,以完全避免他們和解決這個問題以不同的方式 – 2014-09-26 09:07:29
我不知道,但我認爲你的函數參數沒有很好地定義你已經設置了varchar,我認爲它們應該有一個長度,即varchar(100) – 2014-09-26 09:08:09