Sql 使用列作为函数的输入参数,并将结果添加到表中

Sql 使用列作为函数的输入参数,并将结果添加到表中,sql,Sql,ConvertIPToLong是一个函数,我试图使用#test1中的网络列作为变量@cidrIP。我的结果应该有“网络”列以及“低范围”和“高范围”列 SELECT * from #test1 as t1 Declare @CidrIP varchar(20) Set @CidrIP = (select [network] from #test1) Select dbo.[ConvertIPToLong](left(@CidrIP, patindex('%/%' , @CidrIP) -

ConvertIPToLong是一个函数,我试图使用#test1中的网络列作为变量@cidrIP。我的结果应该有“网络”列以及“低范围”和“高范围”列

SELECT * 
from #test1 as t1


Declare @CidrIP varchar(20)
Set @CidrIP = (select [network] from #test1)

Select dbo.[ConvertIPToLong](left(@CidrIP, patindex('%/%' , @CidrIP) - 1)) & (cast(4294967295 as bigint) ^ (Power(2, 32 - Cast(substring(@CidrIP, patindex('%/%' , @CidrIP) + 1, 2) as int)) - 1)) as LowRange
       dbo.[ConvertIPToLong](left(@CidrIP, patindex('%/%' , @CidrIP) - 1)) & (cast(4294967295 as bigint) ^ (Power(2, 32 - Cast(substring(@CidrIP, patindex('%/%' , @CidrIP) + 1, 2) as int)) - 1)) + (Power(2, 32 - Cast(substring(@CidrIP, patindex('%/%' , @CidrIP) + 1, 2) as int)) - 1) as HighRange 

如果我理解你, 我希望这样的事情能奏效:

Select dbo.[ConvertIPToLong](left([network], patindex('%/%' , [network]) - 1)) & (cast(4294967295 as bigint) ^ (Power(2, 32 - Cast(substring([network], patindex('%/%' , [network]) + 1, 2) as int)) - 1)) as LowRange
       dbo.[ConvertIPToLong](left([network], patindex('%/%' , [network]) - 1)) & (cast(4294967295 as bigint) ^ (Power(2, 32 - Cast(substring([network], patindex('%/%' , [network]) + 1, 2) as int)) - 1)) + (Power(2, 32 - Cast(substring([network], patindex('%/%' , [network]) + 1, 2) as int)) - 1) as HighRange 
from #test1

为此,您必须创建一个Sql字符串并动态执行它。要使用哪种Dbms?Microsoft sql server管理研究只有一行吗?否则,您必须使用循环。#我不理解test1有很多rowstory。不过我会试试看。