日期:2014-05-17  浏览次数:20760 次

怎么查找字符串中的多个人名,在数据库中对应的邮箱?
从jsp中接受到的参数类似:“张三;李四;王五;马六”

数据库中有2个字段,一个是人名,一个是邮箱。怎么写SQL才能把这些人的邮箱取出来?

------解决方案--------------------
SQL code

SQL> with u(name,email) as(
  2  select '張三','1@163.com' from dual
  3  union all select '李四','2@163.com' from dual
  4  union all select '王五','3@163.com' from dual
  5  union all select '馬六','4@163.com' from dual
  6  )
  7  select wm_concat(u.email) from u,(
  8  select regexp_substr('張三;李四;王五;馬六', '[^;]+',1,rownum) name from dual
  9      connect by rownum<=length('張三;李四;王五;馬六')-length(replace('張三;李四;王五;馬六', ';', ''))+1) t
 10  where u.name=t.name;

WM_CONCAT(U.EMAIL)                                                              
--------------------------------------------
1@163.com,2@163.com,3@163.com,4@163.com

------解决方案--------------------
。。。 按分号分隔你传进来的字符串。。。。 还要怎么解释。。。。

探讨
能大概解释下这2句吗?知道是正则表达式,但是思路看不懂


SQL code

select regexp_substr('張三;李四;王五;馬六', '[^;]+',1,rownum) name from dual
9 connect by rownum<=length('張三;李四;王五;馬六')-length(replace('張三;李四;王五;馬六', ';', ……