之前开了一个帖: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中任意一个的文本信息。

解决方案 »

  1.   

    这个语句是无法执行的:
    select text1||text2||...||textN text from tablename where text like '%abc%' or text like 
    '%def%' or text like '%ghi%' or text like '%jk%';
      

  2.   

    select text from(select text1||text2||...||textN text from tablename) where text like '%abc%' or text like 
    '%def%' or text like '%ghi%' or text like '%jk%';
      

  3.   

    如果text1最后两个字符是“gh”,text2的第一个字符是“i”,那这样的也符合like '%ghi%'的条件,也要select出来??
    如果是的话,个人觉得如果要考虑效率的话,就要考虑这个表数据量有多大,命中率大约多大,就是包含这些字符的占总数据量的百分比为多少才能实行优化。不过,应该也优化不了多少,这样的需求,也只有这样解了。
    如果上述语句不能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%'
    小表的话,这样还行