`

根据多个id查找对应的记录的处理

SQL 
阅读更多
这里主要展现存储函数的一种用法, 比如, 参数是一串用逗号分隔的id, "123,124,125,126", 取得对应的4条记录, 先写一个存储函数, 用来解析id字符串:
create or replace function str2varList( p_string in varchar2 ) return VarTableType
 as
 v_str long default p_string || ',';
 v_n varchar2(2000);
 v_data VarTableType := VarTableType();
 begin
 	loop
 		v_n :=instr( v_str, ',' );
	exit when (nvl(v_n,0) = 0);
	v_data.extend;
 	v_data( v_data.count ) := ltrim(rtrim(substr(v_str,1,v_n-1)));
	v_str := substr( v_str, v_n+1 );
 	end loop;
 	return v_data;
 end;

然后查询语句这样写:
SELECT id, name, birthday, address 
  FROM table(STR2VARLIST('123,124,125,126')) t, t_user e 
  WHERE e.id = t.column_value

也可以这样写:
SELECT id, name, birthday, address 
  FROM t_user e 
  WHERE id in (select * from the (select cast(str2varlist(#ids#) as vartabletype) from dual))

我们在处理这种情况的时候一般都是将id拼成一段sql, 比如这样:id in(123, 124, 125), 这样虽然能解决问题, 但是不是很安全, 如果有SQL注入的话就会导致问题.
分享到:
评论
1 楼 kooen.chen 2009-02-09  
还有很关键的是使用in 对性能消耗很大

相关推荐

    一个服务器搭多个tomcat导致session丢失,或者同一个IP不同端口,多个应用的session会冲突解决方法

    一个服务器上搭建了多个tomcat或者weblogic,端口不一样,同时启动访问时session丢失。如:A,B两个服务,在浏览器中登录访问A后,当前打开的浏览器上在开一个选项卡访问B服务后,回过来点击访问A时session丢失,...

    PI日志按XML字段抽取查找(多图)

    PI日志按XML字段抽取查找(多图) 运行T-code:SXMS_LMS_CONF 填写“接口名”、“发送方系统”和“接收方系统” 填写“XPATH”并选中下面两个框 填写对应的“Namespace” 填写“XPATH”和“Namespace”可以参考ID中的 ...

    Linux中怎么通过PID号找到对应的进程名及所在目录方法

    本篇文章主要介绍了Linux中怎么通过PID号找到对应的进程名及所在目录方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    达梦8数据库jar , 含多个jdk版本的jdbc jar ; hibernate等方言包;

    1. DmJdbcDriver16 对应 Jdk1.6 及以上环境 2. DmJdbcDriver17 对应 Jdk1.7 及以上环境 3. DmJdbcDriver18 对应 Jdk1.8 及以上环境 ---------- maven仓库下载 group id: com.dameng 各版本jar查找网址: ...

    基于角色的用户权限系统设计

    麻烦, 用户一般会简化密码, 或者在多个系统中使 用相同的口令, 或者创建一个 口令“ 列表” ——这 些都是会危及信息保密性的几种做法。不过使用 用户 I D和口令这方法也有它的优点: 如简单, 容易 实现等。...

    Excel新增工具集

    5、多个工作簿中各个表头相同的工作表合并到同一个工作表中:合并后的表格的表头相同,为了明确每一条记录的来源,在表中增加一列标注记录来看何簿何表。 6、多个工作簿中各个名称相同的工作表合并到同一个工作表中...

    jdbc基础和参考

    线程安全的,一个数据库对应一个Sessionfactory(一般一个应用程序对应一个SessionFactory就够了) 3.是一个很大的缓存,本身维护了一个可配置的二级缓存 4.用来构建Session对象 Configuration 1.启动和配置...

    入门学习Linux常用必会60个命令实例详解doc/txt

    不同Linux发行版的命令数量不一样,但Linux发行版本最少的命令也有200多个。这里笔者把比较重要和使用频率最多的命令,按照它们在系统中的作用分成下面六个部分一一介绍。 ◆ 安装和登录命令:login、shutdown、...

    在单文档程序中动态切换多个窗体的源码程序

    <br> 一、 引言 <br> 我们在编制程序中根据需求的不同会在程序风格上选择多文档、单文档或是对话框模式 ,对于单文档模式可能是我们使用比较多的,但有时我们想采用单文档的形式显示多个不同 的...

    经典全面的SQL语句大全

     现在你下定决心要榨干Random 函数的最后一滴油,那么你可能会一次取出多条随机记录或者想采用一定随机范围内的记录。把上面的标准Random 示例扩展一下就可以用SQL应对上面两种情况了。  为了取出几条随机选择的...

    基于C#+MySQL实现(WinForm)个人聊天室软件【100010895】

    本项目目标完成一个可以实现多个不同主题的在线聊天室的桌面应用,用户可以在不同的聊天室中交流不同的话题。用户在登录后可以选择聊天室、查看聊天室人数以及选择用户私聊等。 (1) 用户注册 功能概述:用户可以...

    高并发数据库设计.pdf

    ⾃增序号 当在同⼀服务器的同⼀毫秒中有多个⽣成订单ID的请求时,会在当前毫秒下⾃增此序号,下⼀个毫秒此序号继续从0开始。⽐如在同⼀服务 器同⼀毫秒有3个⽣成订单ID的请求,这3个订单ID的⾃增序号部分将分别是0...

    数据库操作语句大全(sql)

    15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.) select a,b,c from tablename ta where a=(select max(a) from ...

    数据库设计反范式.pdf

    ⼀般是customer⼀张表,address⼀张表,address中存储它对应的customer的ID那么每次付款的时候,需要再查找address 表来得到customer的所有地址。可以在customer后⾯加addr1、addr2字段,但不知道要加多少个,不好。...

    1350多个精品易语言模块

    1350多个精品易语言模块提供下载介绍 1亦思验证码识别1.5免费版.ec 24位转单色位图模块.ec 32张发牌.ec 3D引擎支持库-eOgre.ec 69msn.ec ACCESS 到高级表格.ec Access操作.ec Access数据库压缩修复新建.ec ACCSEE...

    我整理的VBA 自定义函数大全 共138页

    34.在多个工作表中查找一个范围内符合某个指定条件的项目对应指定范围加总求和 35.返回 Column 英文字 36.查找指定列名的列数 37.文字格式的时间(分:秒)转化为数字格式(秒) 38.将"hh:mm:ss"格式的时分秒数转换成秒数...

    MySql基本查询、连接查询、子查询、正则表达查询讲解

    having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。 having 子句被限制子已经在SELECT语句中定义的列和聚合...

    Amazon差评小助手(Fusionzoom Tools) v1.1.1.zip

    3、卖家可以使用fusionzoom ERP的ASIN历史评分爬取功能与 buyer id /profile id相匹配,这样就能对应每个订单的评价 4、然后就可以利用fusionzoom ERP的”订单”-“订单列表”查找订单编号找到买家邮箱,联系买家...

    浅谈jQuery 选择器和dom操作

    基本选择器是JQuery中最常用的选择器,也是最简单的选择器,它通过元素id、class 和标签名来查找DOM元素。这个非常重要,下面的内容都是以此为基础,逐级提高的。 1).“$(“#id”)”,获取id指定的元素,id是全局...

Global site tag (gtag.js) - Google Analytics