我有一个选择查询
select *
from dbo.GetTableFromString ('2,www.google.com')
返回此结果:
2
www.google.com
从注释编辑:函数接受逗号分隔值并返回一个名为name
的列。
现在我想将2
存储在@ID
中名为www.google.com
和@Link
的变量中。
实现这一目标的最佳方法是什么?
答案 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