select                *          from table t
        where case when nameParam is not null then ',' || nameParam || ',' else ',' || t.name1|| ',' end like '%' || t.name1|| '%'
         order by iddesc 
我对where后面这一堆逗号还有case if 的,给搞的不清楚,||表示什么意思?
谁能帮我解释一下,where后面的意思

解决方案 »

  1.   

    if  nameParam is not null then 
       ',' || nameParam || ',' 
    else 
       ',' || t.name1|| ',' 
    end 
    like '%' || t.name1|| '%'
      

  2.   

    ',' 是逗号字符,||是连接符号 ,假如 nameParam ='abc'   
    那么 ',' || nameParam || ',' = ',abc,'
      

  3.   

    为什么,我写的nameParam 不为null,但查出来的数据当中该字段有空的呢?
      

  4.   

    比如:我写了一个字符串,'a,b,c,d',最后是:',a,b,c,d,' 与table表里的记录配时,能与字段里什么也没有的记录配上,这是怎么回事?
      

  5.   

    nameParam || ',' else ',' || t.name1|| ','
    nameParam is null 的时候取t.name1