一个关于sql语句的问题解决,包括:字符串拆分,游标
来源:互联网 发布:js作用域和this关键字 编辑:程序博客网 时间:2024/05/21 17:38
已知stu表和h表,需要形成o_h表
stu表:学生表(姓名,所有爱好) h表:兴趣表(id,所有爱好)
o_h表:学生爱好表(id,爱好,姓名)
基本思路:逐行读取h表,依据','拆分hobby字段的字符串,将拆分后的字符串添加到新的表m_h表,eg:c++,插入前要先判断是否已经存在该表中,若是不存在,则有以下操作:1.插入m_h表 2.向o_h表批量插入hobby中有C++的数据
m_h表:中间生成的表,(id,爱好)
1.游标
参考:http://www.cnblogs.com/wudiwushen/archive/2010/03/30/1700925.html
问题:逐行读取
示例:逐行读取h表
--声明变量
declare @hobby nvarchar(50)
--声明游标
declare mycursor cursor for select hobby from h
--打开游标
open mycursor
--从游标里取出数据赋值到我们@hobby中
fetch next from mycursor into @hobby
--判断游标的状态
while(@@FETCH_STATUS=0)
begin
--处理
print @hobby
--用游标取下一条记录
fetch next from mycursor into @hobby
end
--关闭游标
close mycursor
--撤销游标
deallocate mycursor
2.字符串拆分
参考:http://blog.csdn.net/tastelife/article/details/7914646
http://msdn.microsoft.com/zh-cn/library/ms188043.aspx
实现:
delete from m_h
delete from s_h
--声明变量
declare @hobby nvarchar(50)
declare @count int
declare @h nvarchar(50)
--声明游标
declare mycursor cursor for select hobby from h
--打开游标
open mycursor
--从游标里取出数据赋值到我们@hobby中
fetch next from mycursor into @hobby
--判断游标的状态
while(@@FETCH_STATUS=0)
begin
--处理
print @hobby
while(CHARINDEX(',',@hobby)<>0)
begin
set @h=SUBSTRING(@hobby,1,CHARINDEX(',',@hobby)-1)
--判断@h是否在表m_h中存在
select @count=COUNT(*) from m_h where hobby=@h
if(@count=0)
begin
--插入m_h表中
insert into m_h (hobby) values (@h)
--批量插入s_h表符合@h的项
insert into s_h (hobby,name) select @h,name from stu where hobby like '%'+@h+'%'
end
--截取剩余的字符串重新赋值给@hobby
set @hobby = STUFF(@hobby,1,CHARINDEX(',',@hobby),'')
end
--和@h一样处理@hobby
select @count=COUNT(*) from m_h where hobby=@hobby
if(@count=0)
begin
insert into m_h (hobby) values (@hobby)
insert into s_h (hobby,name) select @hobby,name from stu where hobby like '%'+@hobby+'%'
end
--用游标取下一条记录
fetch next from mycursor into @hobby
end
--关闭游标
close mycursor
--撤销游标
deallocate mycursor
- 一个关于sql语句的问题解决,包括:字符串拆分,游标
- 关于一个字符串的SQL语句
- 一个拆分有规律字符串的SQL
- 关于sql语句的游标共享问题
- 将一个以逗号分隔的字符串拆分单个记录,并生成插入sql语句
- 一个分割字符串的SQL语句
- 经典的拆分字符串的语句
- 经典的拆分字符串的语句
- sql关于游标和游标、存储过程结合的一个例子
- sql关于游标和游标、存储过程结合的一个例子
- 关于sql查询语句 的一个问题
- 一个关于SQL语句的练习题目
- 一个关于JOIN的SQL语句
- 关于SQL语句的一个小技巧
- 一个关于时间的sql语句
- SQL Server : T-SQL中拆分字符串的一个自定义函数
- 拆分字段SQL语句
- 拆分字段SQL语句
- JVM垃圾回收机制
- Java基本开发环境JDK的安装
- OV5640全景模式预览倒180度,拍照正常的问题
- 周期串
- Excel常用电子表格公式大全
- 一个关于sql语句的问题解决,包括:字符串拆分,游标
- cookie模板
- 一篇很全面的freemarker教程
- Java如何每5秒生成一个随机数
- C++学习笔记20140314
- mysql跨库操作速度慢的解决方案
- Ubuntu jsp平台使用JDBC来连接MySQL数据库
- cocos2d-x游戏开发 跑酷(三) 人物跑动
- 链表