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

  • 相关阅读:
    WebSocket资料
    HTML5新增特性
    CSS3新增选择器
    HTM5基本语法
    HTML语义化
    浏览器内核分类
    Layui表格的单双击处理
    c++ cin读取多行数字
    计算机视觉中关于人脸的一些任务
    python实现NMS和softNMS代码
  • 原文地址:https://www.cnblogs.com/zmc/p/3216813.html
Copyright © 2011-2022 走看看