沒有內置函數來分析這些逗號分隔字符串。但是,您可以使用SQL Server中的XML功能來執行此操作。喜歡的東西:
DECLARE @sID VARCHAR(100) = '1,2,3,4';
DECLARE @sOrder VARCHAR(10) = '2,4,1,3';
DECLARE @sIDASXml xml = CONVERT(xml,
'<root><s>' +
REPLACE(@sID, ',', '</s><s>') +
'</s></root>');
DECLARE @sOrderASXml xml = CONVERT(xml,
'<root><s>' +
REPLACE(@sOrder, ',', '</s><s>') +
'</s></root>');
;WITH ParsedIDs
AS
(
SELECT ID = T.c.value('.','varchar(20)'),
ROW_NUMBER() OVER(ORDER BY (SELECT 1)) AS RowNumber
FROM @sIDASXml.nodes('/root/s') T(c)
), ParsedOrders
AS
(
SELECT "Order" = T.c.value('.','varchar(20)'),
ROW_NUMBER() OVER(ORDER BY (SELECT 1)) AS RowNumber
FROM @sOrderASXml.nodes('/root/s') T(c)
)
UPDATE t
SET t."Order" = p."Order"
FROM @tableName AS t
INNER JOIN
(
SELECT i.ID, p."Order"
FROM ParsedOrders p
INNER JOIN ParsedIDs i ON p.RowNumber = i.RowNumber
) AS p ON t.ID = p.ID;
Live Demo
然後你就可以把這個存儲過程或什麼的裏面。
請注意:您不需要手動執行所有這些操作,應該通過某種方式使GridView通過數據綁定自動更新底層數據表。你應該尋找這樣的東西,而不是所有的痛苦。
非常感謝,但什麼是T.c.value? – user1446764
@ user1446764 [**'value()**](http://msdn.microsoft.com/zh-cn/library/ms178030.aspx)是SQL Server中四種XML數據類型方法之一。它用於提取xml節點內的值。 –