在一些框架中,后台传入参数,使用oracle like语句查询数据时的问题小结

后台伪代码

connect();

pstmt.setString(1,s)

rs=pstmt.executeQuery()

SQL:select * from dual where name like ?

 在设置是s,setString时,可先s定义一下

s="s";

pstmt.setString(1,"%"+s+"%")

这样便能使s的值传到SQL中继续执行

以上方法可以解决like查询时传参问题,但是如果数据量很大的情况下,鼓励使用oracle的instr()函数:

instr(name,'CSDN')>0  相当于  namelike '%CSDN%'

instr(name,'CSDN')=1  相当于  name like 'CSDN%'

instr(name,'CSDN')=0  相当于  namenot like '%CSDN%'

使用instr函数时,传参相对简单,直接使用instr(name,?)>0即可,大数据下执行效率高过like

oracle之前使用的比较少,这种问题可能大家都有自己的解决办法,或者在大家看来这都不属于问题,望对那些想我一样oracle使用较少并且遇到此类问题的朋友有所帮助。

如有问题,可留言讨论。

 

ORACLE数据库支持使用PL/SQL编写存储过程和函数来实现根据参数循环查询的需求。PL/SQL是一种过程化语言,它允许你将SQL语句组合在一起,并通过循环结构来处理数据。下面是一个简单的例子,展示了如何使用PL/SQL的循环结构来进行条件查询: ```sql DECLARE v_counter NUMBER := 0; -- 循环计数器变量 v_param VARCHAR2(100); -- 查询参数变量 BEGIN -- 假设从某个应用层传入参数是 'example' v_param := 'example'; -- 开始循环,根据需要可以设置循环条件和步进 FOR i IN 1..10 LOOP -- 这里可以根据实际需求构造查询语句 -- 例如,根据传入参数v_param查询数据表table_name数据 FOR rec IN (SELECT * FROM table_name WHERE column_name LIKE '%' || v_param || '%') LOOP -- 对查询结果进行处理,此处仅打印 DBMS_OUTPUT.PUT_LINE(rec.id || ' ' || rec.name); END LOOP; END LOOP; -- 其他逻辑处理... END; ``` 在上述代码,首先声明了循环计数器`v_counter`和查询参数`v_param`。在PL/SQL,首先设置查询参数`v_param`的值,然后使用`FOR`循环构造查询,并通过`LIKE`操作符配合`v_param`来实现模糊查询。在内部循环,对查询结果集进行处理,这里仅为示例输出了结果。 需要注意的是,实际应用可能需要根据业务逻辑调整循环条件、步进以及循环内部的SQL查询语句。同,应该根据实际情况考虑性能优化,避免在循环执行过于复杂或数据量过大的查询
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值