我需要更新一些行那裏BF_ID是一個nvarchar @ArrBF =「1,3,5,7」SQL更新與其中一個nvarchar的
update BILL_FOLDERS_DATA
SET
BFD_Quantity = @CFD_Quantity
WHERE BFD_Path = @CFD_Path AND BF_ID IN (@ArrBF)
我得到一個錯誤,因爲我需要將數組轉換爲整數。我怎麼能實現它?
我需要更新一些行那裏BF_ID是一個nvarchar @ArrBF =「1,3,5,7」SQL更新與其中一個nvarchar的
update BILL_FOLDERS_DATA
SET
BFD_Quantity = @CFD_Quantity
WHERE BFD_Path = @CFD_Path AND BF_ID IN (@ArrBF)
我得到一個錯誤,因爲我需要將數組轉換爲整數。我怎麼能實現它?
最簡單的方法是將數組轉換爲表值函數,以及使用結果在加入EG -
create FUNCTION [dbo].[F_SplitString]
(@String NVARCHAR(max),@Delimiter VARCHAR(5))
RETURNS @SplittedValues TABLE
(OccurenceId SMALLINT IDENTITY(1,1), SplitValue VARCHAR(MAX))
AS
begin
INSERT INTO @SplittedValues
SELECT Split.a.value('.', 'VARCHAR(100)') AS Data
FROM
(SELECT CAST ('<M>' + REPLACE(@String , @Delimiter, '</M><M>') + '</M>' AS XML) AS Data) AS A
CROSS APPLY Data.nodes ('/M') AS Split(a)
RETURN
END
http://www.codeproject.com/Tips/584680/Using-逗號分隔值參數字符串在S –
明確的重複問題。這裏@ArrBF只是一個字符串,它看起來像一組整數並不重要,它仍然是一個字符串。必須將該字符串拆分成行,並在你的情況下,把它看作整數。 –