--------------------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'
--------------------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
--------------------
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
SET strInput='strInput'
SELECT COL1 FROM yourTable
WHERE LEN(COL1) BETWEEN LEN(@strInput)-1 AND LEN(@strInput)+1
AND COL1 LIKE REPLACE(@strInput,' ','%')