方法之一:
1。你把关键字放到一个表b里面,结构可以col1 nvarcahr(40)
2。然后用select a.aa1,count(*) as [num1] from [table] a,b where patindex('%'+b.col1+'%',a.aa1)>0
group by a.aa1这个语句就可以得到每一行aa1可以里面包含的关键字的总数。
3。找最大的就是了
如:select max(num1) from (
select a.aa1,count(*) as [num1] from [table] a,b where patindex('%'+b.col1+'%',a.aa1)>0
group by a.aa1)
效率应该还可以的
--生成测试数据
create table tab(id int identity(1,1),AA1 varchar(420))
insert into tab(AA1) select '中国的首都是北京'
insert into tab(AA1) select '中国是伟大的地方'
--执行动态查询
declare @s nvarchar(4000),@id int
declare @v nvarchar(1000),@r nvarchar(1000)
set @v = N'中国 北京'
set @s = N''
while charindex(' ',@v)>0
begin
set @r = left(@v,charindex(' ',@v)-1)
set @v = stuff(@v,1,charindex(' ',@v),'')
if len(@r)>0
set @s = @s+N'+(case when charindex('''+@r+''',AA1)>0 then 1 else 0 end)'
end
set @s = @s+N'+(case when charindex('''+@v+''',AA1)>0 then 1 else 0 end)'
set @s = N'select top 1 @id=id from Tab order by '+stuff(@s,1,1,'')+N' desc'