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
分享到:
相关推荐
在 DB2 中,可以使用 "||" 进行字符串连接,这是一种非常方便的字符串操作方式。 二、快速删除大批量数据 在删除大量数据时,使用 delete 语句可能会非常慢,因为删除数据时需要记录数据库日志。为了提高删除速度...
DB2 SQL 通过函数(CONCAT/POSSTR/LOCATE)实现行转列,列转行 可以按照标点把多列转换为一行,多行转换为一列
本文将详细介绍DB2 SQL数据库中的常用函数及其使用方法。 #### 二、数学函数 1. **ABS(exp)**: 返回表达式`exp`的绝对值。 - 示例:`ABS(-10)` 返回 `10`。 2. **ABSVAL(exp)**: 功能与ABS相同,返回表达式的...
- **Decimal/Double/Integer/Smallint/Real**: 这些数据类型在DB2和Oracle中都可以直接使用,无需特别的转换函数。 - **Hex**: DB2提供`HEX`函数来将二进制数据转换为十六进制格式。 - **Date/Time/Timestamp**: ...
- 使用`LOCATE()`。 这些函数用于查找一个字符串在另一个字符串中的位置,对于文本处理非常有用。 ### 九、字符串长度和子字符串提取 #### 1.1.8 字符串长度和子字符串提取 - **SQL Server**: - 使用`LEN()`,...
- **Locate/PosStr**: 查找一个字符串在另一个字符串中的位置。 - **Repeat**: 重复字符串指定次数。 - **Replace**: 替换字符串中的某部分。 - **Space**: 创建指定数量的空格字符串。 - **Substr**: 截取字符串的...
在DB2中,函数的使用是数据库查询语言SQL的重要组成部分。以下是对DB2常用函数的详细介绍: 1. AVG 函数:这个函数用于计算一组数值的平均值。基本语法是 `AVG(expression)`。它会忽略NULL值,并且如果指定`...
- 相反,当需要将外部文件中的数据加载到DB2数据库表中时,可使用该命令实现数据导入。 ### 3. 表结构管理 - **激活非日志表**:`ALTER TABLE table_name activate NOT LOGGED initially WITH EMPTY TABLE;` - ...
### DB2函数大全 在数据库管理系统(DBMS)中,IBM DB2是一款强大的产品,它不仅提供了稳定、高效的数据存储服务,还内置了丰富的SQL函数,这些函数极大地简化了开发...希望本文对您了解和使用DB2中的SQL函数有所帮助。
本文将详细介绍DB2中常用的字符串类型函数,并通过具体示例加以说明,帮助读者更好地理解和运用这些函数。 ### 1. VALUE 函数 VALUE 函数用于将表达式转换为指定的数据类型。其语法结构为:`VALUE(EXPR1 AS TYPE1)...
本文将深入探讨DB2中的两类重要函数:**聚集函数**和**标量函数**。 #### 一、聚集函数 聚集函数主要用于对一组数据进行计算或汇总,从而得出单一的结果值。在DB2中,常用的聚集函数包括: 1. **AVG**: 计算指定...
- **DB2**: 使用`LOCATE`函数来查找子字符串的位置。例如,`SELECT LOCATE('E', 'ABCDEF') FROM SYSIBM.SYSDUMMY1`。 #### 9. 获取字符串长度 - **SQL Server**: 使用`LEN`函数来获取字符串长度。 - **Oracle** 和...
在Oracle中,视图中使用别名与表字段同名可能不会引发问题,但DB2对此有更严格的限制。当视图别名与表字段同名时,DB2可能会报“SQL0153N”错误。为了避免这种冲突,应当为视图中的列名提供唯一的别名,如在示例中...
- **DB2** 使用`LOCATE`函数。 ### 其他函数 - 字符串长度函数在所有数据库中都是一致的,分别为`LEN()`、`LENGTH()`和`LENGTH()`。 - 字符串截取函数也相似,分别是`SUBSTRING()`、`SUBSTR()`和`SUBSTR()`。 ...