之前开了一个帖:http://community.csdn.net/Expert/TopicView3.asp?id=4953979
不过问题没有解决掉。数据库中多个字段text1、text2、text3、...、textN,存储的是一段文本信息,现在我需要查询包含abc、def、ghi、jk中的任意一个或多个的文本,该怎么生成这个where条件?简单模拟如下:
1. Text = text1 + text2 + text3 + ... + textN
2. where Text like '%abc%' or '%def%' or '%ghi%' or '%jk%'就是说,我要查询的信息是包含abc、def、ghi、jk中任意一个的文本信息。
不过问题没有解决掉。数据库中多个字段text1、text2、text3、...、textN,存储的是一段文本信息,现在我需要查询包含abc、def、ghi、jk中的任意一个或多个的文本,该怎么生成这个where条件?简单模拟如下:
1. Text = text1 + text2 + text3 + ... + textN
2. where Text like '%abc%' or '%def%' or '%ghi%' or '%jk%'就是说,我要查询的信息是包含abc、def、ghi、jk中任意一个的文本信息。
select text1||text2||...||textN text from tablename where text like '%abc%' or text like
'%def%' or text like '%ghi%' or text like '%jk%';
'%def%' or text like '%ghi%' or text like '%jk%';
如果是的话,个人觉得如果要考虑效率的话,就要考虑这个表数据量有多大,命中率大约多大,就是包含这些字符的占总数据量的百分比为多少才能实行优化。不过,应该也优化不了多少,这样的需求,也只有这样解了。
如果上述语句不能run,可以试试:
select * from
(
select text from(select text1||text2||...||textN text from tablename)
) A where text like '%abc%' or text like
'%def%' or text like '%ghi%' or text like '%jk%'
小表的话,这样还行