背景:为了实现模糊查询。
思路:将原来的库表某条记录的所有列(A1,A2,A3,...)合并为一列A,这样查询的时候只要合并后的列执行where A like '%aa%',这样就能对这条记录是否含有aa进行模糊查询。百度、google了一下,目前看到的是把一列的所有值合并在一个字段内显示,不是我想要的;我要的是针对每一条记录的各个列的值进行合并。想法是用视图实现,但现在首先用select语句不知道怎么合并,求大神打救!!!!!!!!!!如库表:
A1 A2 A3---------列名
a1 a2 a3---------第一条记录
b1 b2 b3---------第二条记录合并后
A----------------列名
a1,a2,a3---------第一条记录
b1,b2,b3---------第二条记录Oracle 11g合并列

解决方案 »

  1.   

    SELECT A1||'-'||A2||'-'||A3 from DATA-TABLE
    刚发完贴,就发现上面的方法可以实现了。那就继续问一下大家,怎么通过视图把一张表的所有字段合并为一个字段(用上面的方法应该可以),然后执行查询的时候只对这个视图执行模糊查询就好了。之前还有个想法就是通过lucene来实现,不过lucene还没用过,就想先通过视图来实现了。当数据量很大的时候,要考虑什么的?怎么建索引???
      

  2.   

    SQL> select * from test;A1    A2    A3
    ----- ----- -----
    a1    a2    a3
    b2    b3    b4SQL> select a1 || ',' || a2 || ',' || a3 as a from test;A
    -----------------
    a1,a2,a3
    b2,b3,b4
      

  3.   

    看要看表的用法 里面字段在sql中的过滤关系  具体大到多少数据 ? 
    --创建视图
    create view view_date
    as
    SELECT A1||'-'||A2||'-'||A3 a
    from DATA-TABLE--建立索引 语法
    create index idx_date on DATA-TABLE(A1)