我有一个SQL Server程序返回这种输出:
ID | Name | Value
100 | Name1 | COUNT([104])
101 | Name2 | ADD([100],[102])
102 | Name3 | SELECT([100])
104 | Name4 | SUB([100],[101],[102])
我想将Value中包含的字符串解析为各自的Name列值,以便输出如下:
ID | Name | Value
100 | Name1 | COUNT([Name4])
101 | Name2 | ADD([Name1],[Name3])
102 | Name3 | SELECT([Name1])
104 | Name4 | SUB([Name1],[Name2],[Name3])
基本上,我需要使用实际的Name值替换Value列中方括号[]内的所有ID。
我应该如何实现此输出?
答案 0 :(得分:0)
我应该如何实现此输出?
如果你真的需要这样做,这将导致一个非常丑陋的函数,它解析字符串的数量:
CREATE FUNCTION dbo.udf_GetNumeric
(@strAlphaNumeric VARCHAR(256))
RETURNS VARCHAR(256)
AS
BEGIN
DECLARE @intAlpha INT
SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric)
BEGIN
WHILE @intAlpha > 0
BEGIN
SET @strAlphaNumeric = STUFF(@strAlphaNumeric, @intAlpha, 1, '' )
SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric )
END
END
RETURN ISNULL(@strAlphaNumeric,0)
END
GO
然后您的查询将如下所示:
SELECT ID, NAME, REPLACE(Value, dbo.udf_GetNumeric(Value), NAME)