DB2中有关like的使用心得。

DB2中的like的使用是有限制的,它不允许跟在它后面的是一个变量或者是字段,目前比较多的是:like '%测试%'这样,因此,在函数或者是存储过程中,就不能通过窗体一个参数给like来组成动态的条件。

如果真要在函数或者是存储过程中,去搜索某个字段是否拥有某个字符串在里面,可以使用locate。下面是locate的用法:

locate(arg1,arg2,<pos>):在arg2中查找arg1第一次出现的位置,指定pos,则从arg2的pos处开始找arg1第一次出现的位置。(第三个参数可以不提供)

下面是我用到该方法时的一个例子:

 

CREATE   FUNCTION  GDZJ.GETNOPASS
 (ITEMNAME 
VARCHAR ( 100 ),
  REPORTTYPE 
INTEGER ,
  RESULTID 
INTEGER
 ) 
  
RETURNS   INTEGER
  SPECIFIC GDZJ.SQL091102183311900
  LANGUAGE SQL
  
NOT  DETERMINISTIC
  READS SQL DATA
  STATIC DISPATCH
  CALLED 
ON   NULL  INPUT
  EXTERNAL ACTION
  INHERIT SPECIAL REGISTERS
  
begin  atomic
        
-- 返回值0:没有该检验项目。1:有检验项目,但全部合格。2:有检验项,但有一个不合格。(只要有一个不合格就判其不合格)
         DECLARE  IResult  INTEGER ;
        
DECLARE  ICount  INTEGER ;
        
set  IResult = 0 ;
        
-- REPORTTYPE:1:外单位、0:非外单位
         if  REPORTTYPE = 1   then
           
set  ICount = (
               
select   count ( 1 from  DETECT_END_INFO  where  
                      CHECK_OUT_UNIT_INFO_ID
= RESULTID  and  locate(ITEMNAME,PROJECT_NAME) > 0
  
end ;

 

转载于:https://www.cnblogs.com/kfarvid/archive/2009/11/03/1595081.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值