--------------------declare 
@inputstr varchar(1000),
@str varchar(8000),
@allstr varchar(8000),
@tmpstr varchar(150),
@i INT,
@J INT,
@SI int,
@SJ intset @inputStr='I am a boy'
set @tmpstr='abcdefghijklmnopqrstuvwxyZABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-=~!@#$%^&*()_+|[]{};:",./<>?'''SELECT @J=LEN( @TMPSTR),@SJ=len(@inputStr),@I=1,@SI=1set @allstr=''''+@inputStr+''''---------------相差一个字符
WHILE @SI<+@SJ
begin
set @str=substring(@inputStr,@SI,1)

if ascII(@str)=32  ---长度加减只针对空格的情况
begin
set @allstr=@allstr+','''+left(@inputStr,@SI-1)+right(@inputStr,@SJ-@SI)+''''
set @allstr=@allstr+','''+left(@inputStr,@SI-1)+'  '+right(@inputStr,@SJ-@SI)+''''
end
while @I<=@J
begin
select @allstr=@allstr+','''+left(@inputStr,@SI-1)+substring(@tmpstr,@I,1) +right(@inputStr,@SJ-@SI)+'''' 
set @I=@I+1 end
set @SI=@SI+1
end
print @allstr---------------------------得到下面的字符串,这样应该可以实现
'I am a boy','a am a boy','b am a boy','c am a boy','d am a boy','e am a boy','f am a boy','g am a boy','h am a boy','i am a boy','j am a boy','k am a boy','l am a boy','m am a boy','n am a boy','o am a boy','p am a boy','q am a boy','r am a boy','s am a boy','t am a boy','u am a boy','v am a boy','w am a boy','x am a boy','y am a boy','Z am a boy','A am a boy','B am a boy','C am a boy','D am a boy','E am a boy','F am a boy','G am a boy','H am a boy','I am a boy','J am a boy','K am a boy','L am a boy','M am a boy','N am a boy','O am a boy','P am a boy','Q am a boy','R am a boy','S am a boy','T am a boy','U am a boy','V am a boy','W am a boy','X am a boy','Y am a boy','Z am a boy','1 am a boy','2 am a boy','3 am a boy','4 am a boy','5 am a boy','6 am a boy','7 am a boy','8 am a boy','9 am a boy','0 am a boy','- am a boy','= am a boy','~ am a boy','! am a boy','@ am a boy','# am a boy','$ am a boy','% am a boy','^ am a boy','& am a boy','* am a boy','( am a boy',') am a boy','_ am a boy','+ am a boy','| am a boy','[ am a boy','] am a boy','{ am a boy','} am a boy','; am a boy',': am a boy','" am a boy',', am a boy','. am a boy','/ am a boy','< am a boy','> am a boy','? am a boy','' am a boy','Iam a boy','I  am a boy','I ama boy','I am  a boy','I am aboy','I am a  boy'

解决方案 »

  1.   

    更新,最好学是填入临时表,好象8000个字符会不够长。:)
    --------------------declare 
    @inputstr varchar(1000),
    @str varchar(8000),
    @allstr varchar(8000),
    @tmpstr varchar(150),
    @i INT,
    @J INT,
    @SI int,
    @SJ intset @inputStr='I am a boy'
    set @tmpstr='abcdefghijklmnopqrstuvwxyZABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-=~!@#$%^&*()_+|[]{};:",./<>?'''SELECT @J=LEN( @TMPSTR),@SJ=len(@inputStr),@I=1,@SI=1set @allstr=''''+@inputStr+''''---------------相差一个字符
    WHILE @SI<+@SJ
    begin
    set @str=substring(@inputStr,@SI,1)

    if ascII(@str)=32  ---长度加减只针对空格的情况
    begin
    set @allstr=@allstr+','''+left(@inputStr,@SI-1)+right(@inputStr,@SJ-@SI)+''''
    set @allstr=@allstr+','''+left(@inputStr,@SI-1)+'  '+right(@inputStr,@SJ-@SI)+''''
    end
             set @I=1
    while @I<=@J
    begin
    select @allstr=@allstr+','''+left(@inputStr,@SI-1)+substring(@tmpstr,@I,1) +right(@inputStr,@SJ-@SI)+'''' 
    set @I=@I+1 end
    set @SI=@SI+1
    end
    print @allstr
      

  2.   

    -----插入表变量的例子。
    --------------------
    declare @temptable table (string varchar(800))
    declare 
    @inputstr varchar(1000),
    @str varchar(8000),
    @allstr varchar(8000),
    @tmpstr varchar(150),
    @i INT,
    @J INT,
    @SI int,
    @SJ intset @inputStr='I am a boy'
    set @tmpstr='abcdefghijklmnopqrstuvwxyZABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-=~!@#$%^&*()_+|[]{};:",./<>?'''SELECT @J=LEN( @TMPSTR),@SJ=len(@inputStr),@I=1,@SI=1---set @allstr=''''+@inputStr+''''
    insert into @temptable (string)values(@inputStr)---------------相差一个字符
    WHILE @SI<+@SJ
    begin
    set @str=substring(@inputStr,@SI,1)

    if ascII(@str)=32  ---长度加减只针对空格的情况
    begin
    /*
    set @allstr=@allstr+','''+left(@inputStr,@SI-1)+right(@inputStr,@SJ-@SI)+''''
    set @allstr=@allstr+','''+left(@inputStr,@SI-1)+'  '+right(@inputStr,@SJ-@SI)+''''
    */
    insert into @temptable (string)values(left(@inputStr,@SI-1)+right(@inputStr,@SJ-@SI))
    insert into @temptable (string)values(left(@inputStr,@SI-1)+'  '+right(@inputStr,@SJ-@SI))
    end
    set @I=1
    while @I<=@J
    begin
    --select @allstr=@allstr+','''+left(@inputStr,@SI-1)+substring(@tmpstr,@I,1) +right(@inputStr,@SJ-@SI)+'''' 
    insert into @temptable (string)values(left(@inputStr,@SI-1)+substring(@tmpstr,@I,1)+right(@inputStr,@SJ-@SI))
    set @I=@I+1 end
    set @SI=@SI+1
    end
    select * from @temptable
      

  3.   

    DECLARE @strInput varchar(200)
    SET strInput='strInput'
    SELECT COL1 FROM yourTable 
    WHERE LEN(COL1) BETWEEN LEN(@strInput)-1 AND LEN(@strInput)+1
    AND COL1 LIKE REPLACE(@strInput,' ','%')