我发现以下代码用零填充 IP 地址,以使其在字典上具有可比性。该代码可以正常工作,但我需要它作为 SQL 中的标量函数。你可以在代码中转换它来创建一个同样的标量函数吗?我们目前使用 SQL Server 2008 R2。
DECLARE @a as NVARCHAR(15)
SET @a = '2.18.4.14'
SELECT
@a = CASE
WHEN CHARINDEX('.',@a) < 4
THEN STUFF(@a,1,0,REPLICATE('0',4-CHARINDEX('.',@a,1)))
ELSE @a
END
,
@a = CASE
WHEN CHARINDEX('.',@a) < 8
THEN STUFF(@a,5,0,REPLICATE('0',8-CHARINDEX('.',@a, 5)))
ELSE @a
END
,
@a = CASE
WHEN CHARINDEX('.',@a) < 12
THEN STUFF(@a,9,0,REPLICATE('0',12-CHARINDEX('.',@a, 9)))
ELSE @a
END
,
@a = CASE
WHEN LEN(@a) < 15
THEN STUFF(@a,13,0,REPLICATE('0',15-LEN(@a)))
ELSE @a
END
SELECT @a
你能解释一下这段代码是如何工作的吗?我了解 CHARINDEX、STUFF 和 REPLICATE 的作用,但我不了解 CASE 步骤如何修改 IP 地址 @a 的步骤。ist 是标量值还是表?