易截截图软件、单文件、免安装、纯绿色、仅160KB

一条SQL语句,关于字符分割关联多条记录的问题

 原文传送门:http://topic.csdn.net/u/20091010/14/FC7737C1-D60B-43F1-A8B5-A9EEF2DE4426.html
假如现在有两张表:
1.表stuinfo
sid sname subs
1  jack  |1|2|
2  marry |1|4|
3  tom  |3|
2.表subinfo
subid  subname
1      physics
2      maths
3      biology
4      geography
我想把stuinfo的subs字段按|字符分开,然后匹配subinfo的subid,取subname的值,匹配到多个的话就用逗号隔开。
简而言之我想得到的结果如下:
sid  sname subname
1    jack  physics,maths
2    marry physics,geography
3    tom  biology
希望各位大侠能帮忙设计一下SQL语句,谢谢了!
Oracle 10g以上版本
select a.sid,a.sname,wm_concat(b.subname) subname
from stuinfo a,subinfo b
where instr(a.subs,'|'||b.subid(+)||'|')>0
group by a.sid,a.sname
9i的
 select sid,sname,substr(max(sys_connect_by_path(subname,',')),2) subname
from (
select a.sid,a.sname,b.subname,
row_number()over(partition by a.sid order by rownum)rn
from stuinfo a,subinfo b
where instr(a.subs,'|'||b.subid(+)||'|')>0)
connect by prior rn=rn-1 and prior sid=sid
start with rn=1
group by sid,sname


相关文档:

SQL_学生

 
第一部分
单表查询
例一:查询全体学生的学号与姓名
SELECT Sno,Sname
from Student;
例二:查询全体学生的姓名、学号、所在系
SELECT Sname,Sno,Sdept
from Student;
例三:查询全体学生的详细记录
SELECT *
from Student;
等价于:
SELECT *
from Student;
例四:查询全体学生的姓名及其出生年份 ......

ORACLEPL/SQL基础

 ORACLEPL/SQL基础--游标的学习来源:
    游标字面理解就是游动的光标。
    用数据库语言来描述:游标是映射在结果集中一行数据上的位置实体,有了游标用户就可以访问结果集中的任意一行数据了,将游标放置到某行后,即可对该行数据进行操作,例如提取当前行的数据等等。
  ......

SQL 中 where 1=1 和 1=0的 作用

where 1=1有什么用?在SQL语言中,写这么一句话就跟没写一样。
select * from table1 where 1=1与select * from table1完全没有区别,甚至还有其他许多写法,1<>2,'a'='a','a'<>'b',其目的就只有一个,where的条件为永真,得到的结果就是未加约束条件的。
在SQL注入时会用到这个,例如select * from table1 ......

SQL语言基础考核(一)(oracle)

 1.利用下面的脚本创建BOOK,READER 和 BORROW 表,并完成后面的联系。
CREATE TABLE BOOK(
    NO CHAR(8) PRIMARY KEY,
    TITLE VARCHAR2(50) NOT NULL,
    AUTHOR VARCHAR2(20) ,
    PUBLISH VARCHAR2(20),
    PUB_DA ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号