2017-05-19 122 views
1

我有一个选择查询从查询的SQL Server将价值分配给一个变量

select * 
from dbo.GetTableFromString ('2,www.google.com') 

返回这样的结果:从意见

2 
www.google.com 

编辑:函数接受逗号分隔值并返回一个列名为name

现在我想将2存储在名为@IDwww.google.com的变量中@Link

达到此目的的最佳方法是什么?

+0

你想打电话与这些参数的功能,或者你要存储这些参数的结果? –

+0

商店的结果在这两个参数 – user8034947

+0

尝试这种'声明@id INT,@链路VARCHAR(200) ;具有CTE 从dbo.GetTableFromString ( 选择* ( '2,www.google.com') ) 从 cte'选择 @ ID = ID,@链接=链接 – TheGameiswar

回答

1
DECLARE @SplitResults table(
    RowIndex int IDENTITY(1,1) 
    ,Item varchar(200)); 

INSERT INTO @SplitResults 
    select * from dbo.GetTableFromString ('2,www.google.com'); 

SET @ID = (SELECT Item FROM @SplitResults WHERE RowIndex=1); 
SET @Link = (SELECT Item FROM @SplitResults WHERE RowIndex=2); 
+0

非常感谢:)这个工作对我来说一点 – user8034947

+0

保留,没有保证' 2'将以'@ ID'结尾。它可以得到'RowIndex = 2'。 –

+0

我不知道'GetTableFromString'实际上做了什么,所以只能对'GetTableFromString'的结果做一个假设。 –

0
declare @ID int, @link nvarchar(max); 
select @ID = ID, @link = Link 
from dbo.GetTableFromString ('2,www.google.com') 

我想列正在返回函数dbo.GetTableFromString id和链接。如果它们没有被正确的列名取代。

+0

函数返回一列“名称” – user8034947

0

试试这个。

declare @str nvarchar(200) 
set @str= '2,www.google.com' 
declare @len int 

SELECT @len=CHARINDEX(',', @str); 
SELECT SUBSTRING(@str,0, @len) 'id' 
SELECT SUBSTRING(@str,@len+1, LEN(@str))'link' 
0

只需使用Charindex

DECLARE @TextValue varchar(100) = '2,www.google.com' 
DECLARE @ID int 
DECLARE @link varchar(100) 

SELECT @ID = substring(@TextValue, 0, charindex(',',@TextValue)), 
     @link = RIGHT(@TextValue,len(@TextValue) - charindex(',',@TextValue)) 


SELECT @ID, @link 

回报

2 www.google.com