UDF
Declare @YourTable table (Readings varchar(50))
Insert Into @YourTable values
('{envelope:[{0:0},{1:18},{2:22},{3:28},]}'),
('{envelope:[{0:0},{1:12},{2:17},{3:24},]}')
Select A.*
,B.Total
From @YourTable A
Cross Apply (Select Total = sum(cast(Substring(Key_Value,1,charindex('}',Key_Value)-1) as int)) from [dbo].[udf-Str-Parse](Readings,':') where ISNUMERIC(left(Key_Value,1))=1) B
戻り
Readings Total
{envelope:[{0:0},{1:18},{2:22},{3:28},]} 68
{envelope:[{0:0},{1:12},{2:17},{3:24},]} 53
UDF
CREATE FUNCTION [dbo].[udf-Str-Parse] (@String varchar(max),@Delimeter varchar(10))
--Usage: Select * from [dbo].[udf-Str-Parse]('Dog,Cat,House,Car',',')
-- Select * from [dbo].[udf-Str-Parse]('John Cappelletti was here',' ')
Returns @ReturnTable Table (Key_PS int IDENTITY(1,1), Key_Value varchar(max))
As
Begin
Declare @XML xml;Set @XML = Cast('<x>' + Replace(@String,@Delimeter,'</x><x>')+'</x>' as XML)
Insert Into @ReturnTable Select ltrim(rtrim(String.value('.', 'varchar(max)'))) FROM @XML.nodes('x') as T(String)
Return
End
を必要に応じてテキスト – TheGameiswar