zoukankan      html  css  js  c++  java
  • DB2 like两个表的字段或like一个变量

    DB2中的like的使用是有限制的,它后面不能跟一个变量或者是字段,因此,在存储过程或SQL语句中就不能like一个变量或一个字段。

    比如有两个表A(a,b,c,d),B(a,b,c,d)。

    普遍的用法是:

    select * from A where A.b like '%张%'

    此语句在任何数据库都是通用的,

    但有时也遇到这种情况:

    select A.a,B.b from A,B where A.d like B.d||'%'

    此语句在oracle中执行没有问题,但在db2中就不行,报以下错误:

     SQL0132N  LIKE 谓词或 POSSTR 标量函数无效,因为第一个操作数不是字符串表达式或第二个操作数不是字符串。LOCATE 或 POSITION 标量函数无效,因为第一个操作数不是字符串,或者第二个操作数不是字符串表达式。

    此种情况在db2中是使用locate函数,locate用法:

    locate(arg1,arg2,pos),在org2中查找arg1第一次出现的位置,pos指明从哪个位置开始查找(省略则从开始查找),如果arg1不为null且查找不到

    的话返回0,如果找到则返回大于0的数字。

    对于语句:

    select A.a,B.b from A,B where A.d like B.d||'%'

    在db2中应该修改为:

    select A.a,B.b from A,B where locate(B.d,A.d)>0

  • 相关阅读:
    vue项目总结,所用到的技术点
    豆瓣电影个人项目总结
    博学谷项目总结,个人总结经验
    JavaScript数组的常用方法
    移动端base.css的内容,
    normalize.css可以对css初始化,不同浏览器可以统一初始样式
    jsp第十次作业
    jsp第九次作业
    jsp第八次作业
    jsp第七次作业
  • 原文地址:https://www.cnblogs.com/zmc/p/3216813.html
Copyright © 2011-2022 走看看