2017-05-19 118 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