DB2中like使用 locate
程序员文章站
2022-06-13 08:10:51
...
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
比如有两个表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
下一篇: RMI 实例
推荐阅读
-
MySQL中的LOCATE和POSITION函数使用方法
-
MySQL中的LOCATE和POSITION函数使用方法
-
linux中locate命令使用介绍(快速搜寻档案)
-
linux中locate命令使用介绍(快速搜寻档案)
-
MySQL中关于ORDERBY、DISTINCT、ALTER、LIKE/NOTLIKE、REGEXP/NOTREGEXP、COUNT、MAX的使用介绍
-
SQL SERVER中LIKE使用变量类型不同输出结果不一致解惑
-
Oracle和DB2数据库中的Translate使用讲解
-
使用SQL查询DB2 9中的XML数据
-
DB2中like使用 locate
-
Oracle中查询使用正则表达式函数REGEXP_LIKE