`

根据多个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 对性能消耗很大

相关推荐

    根据进程id查找主窗口

    本话题主要围绕如何根据进程ID(PID)来查找并获取对应的主窗口。这个功能在系统监控、自动化测试、软件调试等场景中非常实用。 首先,我们要理解如何在Windows API中获取进程和窗口的信息。Windows API提供了丰富...

    Excel多表对应处理.rar

    在Excel中进行多表对应处理是一项常见的数据管理任务,尤其在数据分析、财务报表或项目管理等领域。本资源“Excel多表对应处理.rar”提供了一种使用易语言编写的源码,帮助用户解决这类问题。易语言是一种简洁明了的...

    查找删除重复记录

    对于更复杂的情况,例如涉及多个字段的重复记录,可以使用类似的方法。假设表`vitae`中有`peopleId`和`seq`两个字段,需要查找并删除其中的重复记录: ```sql -- 查找peopleId和seq重复的记录 SELECT * FROM vitae ...

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

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

    根据省份查找高校的angularjs实现

    最后,"app"标签表明这是一个完整的应用程序,可能包括多个视图和路由。AngularJS的`ngRoute`或`ui-router`模块可以帮助我们管理不同的视图和状态,实现页面间的导航。 在压缩包文件"demo2"中,可能包含了这个高校...

    匹配Formula值对应的INCHIKEY,获取对应HMDB ID,Common Name

    可能用Python编写,它遍历文件夹中的多个文件,对每个文件中的Formula值进行匹配,查找对应的INCHIKEY,然后进一步在HMDB数据库中寻找匹配的HMDB ID和Common Name。这种自动化处理提高了数据处理的效率,避免了手动...

    金蝶EAS开发中根据单据id获取实体名的方法

    // 根据类型来查找对应的单据实体 IMetaDataLoader metaDataLoader = MetaDataLoaderFactory.getRemoteMetaDataLoader(); EntityObjectInfo entity = metaDataLoader.getEntity(bosobjecttype); // 根据实体...

    按设备名称识别扫描内容,一台电脑多个扫描抢多个软件

    总结,通过C#和WinForm,结合合适的USB设备处理库,我们可以实现一台电脑连接多个扫描枪并根据设备名称识别其输出的功能,这在零售、物流等行业有着广泛的应用。在实际开发中,还需要关注设备兼容性、用户界面友好性...

    通过进程ID找到窗口句柄.

    - 一个进程可能创建多个窗口,这意味着如果目标进程创建了多个窗口,上述方法只能返回其中一个窗口的句柄。若需获取全部窗口句柄,则需要进一步处理。 - 在实际应用中,可能会遇到权限问题,特别是当尝试操作不属于...

    打开多个窗口

    ### 打开多个窗口 在计算机编程领域,尤其是在使用Visual C++(VC)进行桌面应用程序开发时,“打开多个窗口”是一项基本且重要的功能。本文将详细介绍如何实现这一功能,并探讨在此过程中需要注意的关键问题。 ##...

    android一个Activity里面多个listview

    在Android开发中,一个Activity...总之,实现一个Activity内多个ListView的关键在于正确配置布局,创建独立的Adapter,以及适当地处理事件和优化性能。通过熟练掌握这些技巧,开发者可以灵活地满足各种列表展示的需求。

    sql查询重复记录方法大全

    #### 方法八:处理具有多个重复字段的记录 **SQL语句**: ```sql SELECT DISTINCT * INTO #Tmp FROM tableName; DROP TABLE tableName; SELECT * INTO tableName FROM #Tmp; DROP TABLE #Tmp; ``` **解析**: - ...

    成绩管理系统--C语言课程设计

    3. **数据结构设计**:使用结构体表示学生信息,包含学号、姓名和成绩等字段,使用数组或链表存储多个学生记录。 四、程序正文部分 程序主要分为以下几个部分: 1. 主函数`main()`:初始化,创建菜单,调用其他...

    SQL SERVE根据值查找所在的表和字段

    假设我们有一个复杂的数据库环境,其中包含多个表,并且每个表中有多个字段。现在我们需要找到一个特定值(例如:'610012')出现在哪些表中的哪些字段里。这个问题可以通过编写动态SQL来解决。 #### 二、技术原理 ...

    asp中,一个下拉框对应多个文本框动态显示数据库内容

    这段代码会根据姓名查询数据库,如果找到记录,则序列化为JSON格式并返回给前端。 6. **更新文本框**: `updateTextBoxes()`函数解析服务器返回的JSON数据,然后更新文本框的值: ```javascript function ...

    处理违章记录表.doc

    这样的违章记录表在IT行业中的应用可能涵盖多个方面,例如员工网络行为管理、系统安全审计、代码审查等。通过这样的表格,可以有效地管理违章行为,提高组织的安全性和合规性,同时通过数据分析找出问题的根源,持续...

    获取上一条下一条记录11

    3. 如果有多个日期相同的记录,再按 `ID` 倒序排序。 4. 使用 `FirstOrDefault()` 方法获取第一条满足条件的记录,即上一条记录。 对于下一条记录,条件相反: 1. 记录的 `Date` 必须小于当前记录的 `Date`。 2. ...

    发布新闻,根据id修改标题,title模糊 查询,根据id数组删除新闻

    在数据库层面,可以使用IN子句来一次性处理多个ID的删除操作,避免多次数据库交互,提升性能。 在项目的构建过程中,`.classpath`和`.project`文件是Eclipse IDE的项目配置文件,它们定义了项目的类路径和项目结构...

    中文汉字对应拼音和首字母SQL

    - `id`: 主键,唯一标识每个记录。 - `cn`: 中文汉字。 - `en`: 对应的拼音。 - `f_en`: 拼音的首字母。 #### 示例SQL语句 下面是一个简单的示例,展示如何插入部分数据到这张表中: ```sql CREATE TABLE pinyin ...

    根据数据库表中记录自动构造一棵结构树的一种高效算法

    函数内部包含一个子函数`FindKey`,用于在数据集中查找特定ID的记录。 通过以上步骤,我们可以高效地根据数据库表中的记录构建出结构树,这种算法避免了多次磁盘操作,提高了性能,同时也方便了结点与数据库记录的...

Global site tag (gtag.js) - Google Analytics