declare @a varchar(20)
set @a = 'fda#abcd#af#'if len(@a) - len(replace(@a,'#','')) <2
print '没有两个#'
else
begin
    select substring(@a,charindex('#',@a)+1, 
charindex('#',right(@a,len(@a) - charindex('#',@a)))-1 )
end-------------------- 
abcd(所影响的行数为 1 行)

解决方案 »

  1.   

    create function test(@a varchar(20)) 
    returns varchar(20)
    as
    begin
    declare @b varchar(20)
    if len(@a) - len(replace(@a,'#','')) <2
    set @b = '****'
    else
    begin    
        select @b = substring(@a,charindex('#',@a)+1, 
    charindex('#',right(@a,len(@a) - charindex('#',@a)))-1 )
    end
    return @b
    end
    select dbo.test('a#abc#acde#ad'),dbo.test('ddafdsa#')
                                              
    -------------------- -------------------- 
    abc                  ****(所影响的行数为 1 行)