从SQL Server中的查询中为变量赋值

时间:2017-05-19 06:34:22

标签: sql sql-server

我有一个选择查询

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

返回此结果:

2
www.google.com

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

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

实现这一目标的最佳方法是什么?

4 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

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

我认为列正在返回函数dbo.GetTableFromString id和link。如果它们没有被正确的列名替换..

答案 2 :(得分: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'

答案 3 :(得分: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
相关问题