日期:2014-05-16  浏览次数:20537 次

判断一个字符串中 与另外一个字符串中相同字符个数
表名 = CODES
列名 =  STR

codes
-------------------------------------------------------------------------
ID               str       ...
1                acescsdnsd
2                ESEESMCSD
3                KQCSSSSSM
4                ssocsosdesf
5                ..................
---------------------------------------------------------------------------


现在有一个字符串 长度为4 = CSDN(不区分大小写)

要求使用ACCESS中可以使用的语句 判断出 与表中 最大相同的长度的值  比如当前值就为 4 .ID1中存在4位相同的数据 

其实说白了就是 判断一个字符串与数据库中一列字符串数据中相同字符个数的查询 也可以理解为相似度查询

------解决方案--------------------
给你个完整的吧 :

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',0

declare @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
end

select * from @t
/*
ID          str         cnt
----------- ----------- -----------
1           acescsdnsd  4
2           ESEESMCSD   3
3           KQCSSSSSM   2
4           ssocsosdesf 3
*/