我有類型爲nvarchar(最大)的一個表格單元格的拆分和總和通常看起來像這樣: A03 B32 Y660 P02SQL服務器 - 單細胞
例如一個字母后跟一個數字,用空格分隔。我想要做的是在SQL過程中獲得所有這些數字的總和。其他語言中的東西相當簡單,但我對SQL相當陌生,而且在我看來,像在字符串中使用相當笨拙的語言。 Aaanyway,我想這將是這樣的:
1)創建一個臨時表和使用分流功能
2)剝去每一個細胞
3的第一個字符)轉換數據填充以int
4)更新目標table.column設置爲所述臨時表的總和。
所以我得到儘可能的:
CREATE PROCEDURE [dbo].[SumCell] @delimited nvarchar(max), @row int
AS
BEGIN
declare @t table(data nvarchar(max))
declare @xml xml
set @xml = N'<root><r>' + replace(@delimited,' ','</r><r>') + '</r></root>'
insert into @t(data)
select
r.value('.','varchar(5)') as item
from @xml.nodes('//root/r') as records(r)
UPDATE TargetTable
SET TargetCell = SUM(@t.data) WHERE id = @row
END
顯然,第一個字符剝離並轉換爲int部分缺失以及最重要的是,我得到一個「必須聲明標量變量@t」錯誤...