从嵌套子字符串我想存储内部子串输出

时间:2012-07-13 10:43:32

标签: sql-server-2008

假设我有以下命令

 Declare @input as varchar(500)

  set @input = 'abce,dfg'

  select substring(substring(@input,1,charindex(',',@input)+1),1,2)

如何在新变量中保存内部子串的结果?

2 个答案:

答案 0 :(得分:0)

除非我错过了什么,否则你可以做......

declare @innersub varchar(500)
set @innersub = substring(@input,1,charindex(',',@input)+1)

或者...

declare @innersub varchar(500)
select @innersub = substring(@input,1,charindex(',',@input)+1)

然后您可以使用@innersub ...

select substring(@innersub,1,2)

更新(由于评论中OP的更多信息)

不可能从单个SELECT语句设置变量返回值。

以下将永远失败......

select field1, @var=field2 from table

修改

您是否看过使用返回表的用户定义函数?

CREATE FUNCTION dbo.GetSubString ( @input varchar(500) )
RETURNS @result TABLE ( sub1 varchar(500), sub2 varchar(500) )
AS
BEGIN
    INSERT INTO @result (sub1, sub2)
    SELECT substring(substring(@input,1,charindex(',',@input)+1),1,2),
        substring(@input,1,charindex(',',@input)+1)
    RETURN
END

然后你可以称之为......

declare @input varchar(500)
set @input = 'abce,dfg'
select sub1, sub2 from dbo.GetSubString(@input)

答案 1 :(得分:0)

Declare @input as varchar(500),
 @cInnerStr varchar(500)
  set @input = 'abce,dfg'
 Set @cInnerStr = substring(@input,1,charindex(',',@input)+1)
 select @cInnerStr