今天遇到一个问题,使用游标时,在给游标填充值的时候,select  语句中带有 where查询条件,并且还有 in子句。

本来我是这样写的,试了很多次都不出结果,当然number in (304010,305013)是可以出结果的。

  1. declare @Did varchar(10)
  2. declare @zdcode varchar(50) set @zdcode='304010,305013'
  3. declare cur_id cursor for select Number from dbo.IM_Metadata where number in (@zdcode)
  4. open cur_id
  5. fetch next from cur_id into @Did
  6. while @@fetch_status=0
  7. begin
  8. print @Did
  9. fetch next from cur_id into @Did
  10. end
  11. close cur_id
  12. deallocate cur_id

后来一番折腾,求助了群里同志们

果然有了不错的解决方案

就是添加一个函数:

  1. CREATE FUNCTION [dbo].[f_split]
  2. (
  3. @c VARCHAR(MAX) ,
  4. @split VARCHAR(50)
  5. )
  6. RETURNS @t TABLE ( col VARCHAR(50) )
  7. AS
  8. BEGIN
  9. WHILE ( CHARINDEX(@split, @c) <> 0 )
  10. BEGIN
  11. INSERT @t( col )
  12. VALUES ( SUBSTRING(@c, 1, CHARINDEX(@split, @c) - 1) )
  13. SET @c = STUFF(@c, 1, CHARINDEX(@split, @c), '')
  14. END
  15. INSERT @t( col ) VALUES ( @c )
  16. RETURN
  17. END

然后使用时这样:

  1. declare cur_id cursor for select Number from dbo.IM_Metadata where number in (select * from f_split(@zdcode , ','))

ok问题解决了。

游标后面select 带有in时的更多相关文章

  1. access数据库select查询top时无效的解决办法

    access数据库select查询top时有时无效,原因就是在使用Order by时,且排序的条件中数据有重复的. 比如:select top 10 * from table1 order by cd ...

  2. Python源码文件中带有中文时,输出乱码

    Python源码文件中带有中文时,文件头应加注释: #!/usr/bin/env python # -*- coding: utf-8 -*- 第一行注释是为了告诉Linux/OS X系统,这是一个P ...

  3. tomcat6升级到7时400问题,以及url带有汉字时出错。

    tomcat6升级到7时400问题: 在文件catalina.properties后加入tomcat.util.http.parser.HttpParser.requestTargetAllow=|. ...

  4. JavaScript为select添加option,select选项变化时的处理,获取slelect被选中的值

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  5. select * 所有字段时如何巧妙的使用覆盖索引

    内容从"mysql高性能书籍"  179页摘取 当select * 时.往往使用不到索引..效率不高,因为查询从表中选择所有的列,没有任何索引能覆盖所有的列.不过还是有捷径可以利用 ...

  6. oracle存储过程+游标处理select数据

    create or replace PROCEDURE UPDATE_RECORDCODE is cursor location_data is select * from location wher ...

  7. select选择option时触发的click事件google不兼容问题

    原先的方式,下面代码编写的问题在google浏览器下是触发不了click事件的,具体缘由不清楚,反正都可以概括为不兼容了 碰到问题时,百度到的一篇解决:http://blog.163.com/rihu ...

  8. 当 LAST_INSERT_ID() 带有参数时# 清空重来

    [root@yejr.me]> truncate table t; # 插入1条新记录[root@yejr.me]> insert into t select 0,rand()*1024; ...

  9. 如何优化用SQL语句INSERT INTO … SELECT插入数据时锁全表的问题

    1.binlog format 启用Row Based Replication(行复制)模式: SET GLOBAL binlog_format = 'ROW'; 如果你想永久的启用这个模式,请修改m ...

随机推荐

  1. 自定义列标题 case when

    set@schoolid=41;select l.StartTime,l.EndTime,c.EntranceYear as 入学级,cg.Grade as 年级,c.ClassName as 班级名 ...

  2. B1001 狼抓兔子 最小割

    题目描述 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: ...

  3. java 分布式锁

    转自:http://www.hollischuang.com/archives/1716 目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题.分布式的CA ...

  4. pair的定义C++

    template <class T1, class T2> struct std::pair { typedef T1 first_type; typedef T2 second_type ...

  5. Arranging Your Team

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=35800#problem/D #include <iostream> #inc ...

  6. Html5 ajax的跨域请求

    1.XMLHttpRequest升级版已经实现了跨域请求.不过需要在后台设置:header("Access-Control-Allow-Origin:http://www.a.com&quo ...

  7. HDU 4474 Yet Another Multiple Problem BFS

    题意:求m的倍数中不包含一些数码的最小倍数数码是多少.比如15 ,不包含0  1 3,答案是45. BFS过程:用b[]记录可用的数码.设一棵树,树根为-1.树根的孩子是所有可用的数码,孩子的孩子也是 ...

  8. Microsoft SQL Server数据库学习(一)

    数据库的分类: 1.关系型数据库: 数据库名称 类型 公司 平台 Access 小型数据库 微软 Windows Mysql 小型数据库 AB--sun--甲骨文 Windows/linux/mac ...

  9. js 事件冒泡、事件捕获、stopPropagation、preventDefault

    转自:http://www.jb51.net/article/42492.htm (1)冒泡型事件:事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发. IE 5.5: ...

  10. html 图片翻转

    var Lb = false; var Ub = false; function rotate(obj) { if (obj == "L") { if (Lb == false) ...