我有一个 nvarchar(max) 类型的表格单元格,通常如下所示: A03 B32 Y660 P02
例如,一个字母后跟一个数字,用空格分隔。我想要做的是在 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
显然,缺少第一个 char 剥离和转换为 int 部分,最重要的是,我收到“必须声明标量变量@t”错误...