假如现在有一篇文章其关键字(字段A)是“中国|健康”(与“|”分隔的数组),那么如何与这个关键字中查询另一文章的标题(字段B)是否出现该关键字“中国”或“健康”。从而实现文章的相关链接。像下面的查查询是否正确keyword=split(rs("keyword"),"|")
for i=0 to ubound(keyword)-1
word= " charindex(','"&keyword(i)&"',',','+B+',')>0 or"&word
next
word=left(word,len(word)-2) '处理去最后的OR
select * from table where &word& order by id desc 请高手指教。谢谢
for i=0 to ubound(keyword)-1
word= " charindex(','"&keyword(i)&"',',','+B+',')>0 or"&word
next
word=left(word,len(word)-2) '处理去最后的OR
select * from table where &word& order by id desc 请高手指教。谢谢
set @s='中国|健康'
select * from 表 where charindex('|'+B+'|','|'+@s+'|')>0
set @s='中国|健康'
select * from 表 where '|'+B+'|' like '%|'+@s+'|%'
declare @s varchar(200)
set @s='中国|健康'
select * from 表 where '|'+B+'|' like '%|'+@s+'|%'
-->
declare @s varchar(200)
set @s='中国|健康'
select * from @t where '|'+@s+'|' like '%|'+B+'|%'
set @s='中国|健康'set @sql='select * from 表 where B like ''%'+replace(@s,'|','%'' or B like ''%')
+'%'''exec (@sql)
for i=0 to ubound(keyword)-1
word= " SELECT '"&keyword(i)&"' K UNION ALL "
next
word="(" & Left(word,Len(word)-10) & ") b"SQL="SELECT a.* from [table] a INNER JOIN " & word & " ON CHARINDEX('|' + k + '|','|'+B+'|')>0"随便写的,可能有手误,如果报错的话,请说说哪里提示。试试吧。
set @s=N'中国|健康'
create table #(keyword nvarchar(200))
set @sql='insert # select N''%'
+ replace(@s, '|','%'' union select N''%')
+'%'''
exec(@sql)
select * from 表 a
where exists(
select * from # where a.B like keyword)
drop table #
insert into @t select '中国'
union all select 'ss'
declare @s varchar(200)
set @s='中国|健康'
select * from @t where '|'+@s+'|' like '%|'+B+'|%' select * from @t where charindex('|'+B+'|','|'+@s+'|')>0/*
b
--------------------
中国(1 行受影响)b
--------------------
中国(1 行受影响)
*/
你试试declare @t table( b varchar(20))
insert into @t select '中国人民'
union all select 'ss'这种写法只能匹配字串值相等,而不是字串包含
create table tb( fb varchar(20))
insert into tb select '中国人民'
union all select 'ssxxssxxxv'
declare @s nvarchar(200),@sql nvarchar(2000)
set @s=N'中国|健'
set @sql='(select N'''
+ replace(@s, '|',''' K union select N''')
+''')'
select @sql='select a.* from tb a inner join ' + @sql + ' b on charindex(K,fb)>0'
exec(@sql)drop table tb