通过@Tomalak添加到注释中,下面是一个示例脚本,您可以使用该脚本来填充重量表达转换表。
CREATE TABLE dbo.Weights( Weight varchar(20) NOT NULL ConSTRAINT PK_Weights PRIMARY KEY ,WeightInGrams int NULL ,WeightInKilograms AS CAST(WeightInGrams / 1000.0 AS decimal(10, 2)));GOINSERT INTO dbo.Weights(Weight) SELECt DISTINCT Weight FROM dbo.Foo;GODECLARE @Weight varchar(20) , @WeightInGrams int , @Sqlexpression nvarchar(MAX);DECLARE foo CURSOR LOCAL FAST_FORWARD FOR SELECt weight FROM dbo.Weights;OPEN foo;WHILE 1 = 1BEGIN FETCH NEXT FROM foo INTO @Weight; IF @@FETCH_STATUS = -1 BREAK; BEGIN TRY SET @Sqlexpression = 'SET @WeightInGrams = ' + REPLACE(REPLACE(REPLACE(@Weight, 'x', '*'), 'kg', '000'), 'g', ''); EXEC sp_executesql @Sqlexpression , N'@WeightInGrams int OUTPUT' , @WeightInGrams = @WeightInGrams OUTPUT; END TRY BEGIN CATCH SET @WeightInGrams = NULL; END CATCH; UPDATE dbo.Weights SET WeightInGrams = @WeightInGrams WHERe Weight = @Weight;ENDCLOSE foo;DEALLOCATE foo;GO



