给你个完整的吧 :create table codes( [str] varchar(100) not null )insert into codes select 'acescsdnsd' union all select 'ESEESMCSD' union all select 'KQCSSSSSM' union all select 'ssocsosdesf'declare @v1 varchar(4) set @v1 ='CSDN'select CHARINDEX(@v1,[str]),[str] from codes 自己执行看看结果
declare @T table([ID] int,[str] varchar(11),cnt int) insert @T select 1,'acescsdnsd',0 union all select 2,'ESEESMCSD',0 union all select 3,'KQCSSSSSM',0 union all select 4,'ssocsosdesf',0declare @p varchar(10) set @p='csdn' declare @i int set @i=len(@p) while @i>0 begin update @T set cnt=cnt+sign(charindex(substring(@p,@i,1),[str])) set @i=@i-1 endselect * from @t /* ID str cnt ----------- ----------- ----------- 1 acescsdnsd 4 2 ESEESMCSD 3 3 KQCSSSSSM 2 4 ssocsosdesf 3 */
额 诸位大神 这些都SQL里的 我要的是ACCESS ....
ACCESS 里木有变量 所以很惆怅
declare @T table([ID] int,[str] varchar(11),cnt int) insert @T select 1,'acescsdnsd',0 union all select 2,'ESEESMCSD',0 union all select 3,'KQCSSSSSM',0 union all select 4,'ssocsosdesf',0declare @p varchar(10) set @p='csdn' declare @i int set @i=Len(@p) while @i>0 begin update @T set cnt=cnt+Sgn(InStr([str],mid(@p,@i,1))) set @i=@i-1 endselect * from @t
declare @T table([ID] int,[str] varchar(11),cnt int) insert @T select 1,'acescsdnsd',0 union all select 2,'ESEESMCSD',0 union all select 3,'KQCSSSSSM',0 union all select 4,'ssocsosdesf',0declare @p varchar(10) set @p='csdn' declare @i int set @i=Len(@p) while @i>0 begin update @T set cnt=cnt+Sgn(InStr([str],mid(@p,@i,1))) set @i=@i-1 endselect * from @tdeclare 函数 用不了
declare @T table([ID] int,[str] varchar(11),cnt int) insert @T select 1,'acescsdnsd',0 union all select 2,'ESEESMCSD',0 union all select 3,'KQCSSSSSM',0 union all select 4,'ssocsosdesf',0declare @p varchar(10) set @p='csdn' declare @i int set @i=Len(@p) while @i>0 begin update @T set cnt=cnt+Sgn(InStr([str],mid(@p,@i,1))) set @i=@i-1 endselect * from @tdeclare 函数 用不了 access也不支持临时表变量可以不用,@i 直接用len('csdn')就可以。
[str] varchar(100) not null
)insert into codes
select 'acescsdnsd' union all
select 'ESEESMCSD' union all
select 'KQCSSSSSM' union all
select 'ssocsosdesf'declare @v1 varchar(4)
set @v1 ='CSDN'select CHARINDEX(@v1,[str]),[str] from codes 自己执行看看结果
declare @T table([ID] int,[str] varchar(11),cnt int)
insert @T
select 1,'acescsdnsd',0 union all
select 2,'ESEESMCSD',0 union all
select 3,'KQCSSSSSM',0 union all
select 4,'ssocsosdesf',0declare @p varchar(10) set @p='csdn'
declare @i int set @i=len(@p)
while @i>0
begin
update @T set cnt=cnt+sign(charindex(substring(@p,@i,1),[str]))
set @i=@i-1
endselect * from @t
/*
ID str cnt
----------- ----------- -----------
1 acescsdnsd 4
2 ESEESMCSD 3
3 KQCSSSSSM 2
4 ssocsosdesf 3
*/
insert @T
select 1,'acescsdnsd',0 union all
select 2,'ESEESMCSD',0 union all
select 3,'KQCSSSSSM',0 union all
select 4,'ssocsosdesf',0declare @p varchar(10) set @p='csdn'
declare @i int set @i=Len(@p)
while @i>0
begin
update @T set cnt=cnt+Sgn(InStr([str],mid(@p,@i,1)))
set @i=@i-1
endselect * from @t
insert @T
select 1,'acescsdnsd',0 union all
select 2,'ESEESMCSD',0 union all
select 3,'KQCSSSSSM',0 union all
select 4,'ssocsosdesf',0declare @p varchar(10) set @p='csdn'
declare @i int set @i=Len(@p)
while @i>0
begin
update @T set cnt=cnt+Sgn(InStr([str],mid(@p,@i,1)))
set @i=@i-1
endselect * from @tdeclare 函数 用不了
mssql中的charindex对应 access中InStr
mssql中的substring对应 access中mid
insert @T
select 1,'acescsdnsd',0 union all
select 2,'ESEESMCSD',0 union all
select 3,'KQCSSSSSM',0 union all
select 4,'ssocsosdesf',0declare @p varchar(10) set @p='csdn'
declare @i int set @i=Len(@p)
while @i>0
begin
update @T set cnt=cnt+Sgn(InStr([str],mid(@p,@i,1)))
set @i=@i-1
endselect * from @tdeclare 函数 用不了 access也不支持临时表变量可以不用,@i 直接用len('csdn')就可以。
不能定义变量,我是搞不定了。
不用access 用sql server就ok了。