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
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ganlange/archive/2009/11/28/4895290.aspx
分享到:
相关推荐
在处理字符串时,DB2提供了多种函数和过程,使得对字符串的分隔、提取和操作变得方便高效。以下将详细介绍DB2中用于字符串分隔、函数及过程的使用。 1. 字符串分隔函数: 在DB2中,最常用的字符串分隔函数是`STRIP...
下面将详细介绍如何在C#环境下通过Oracle.NET接口实现将长于4000字符的字符串转化为CLOB类型并存入Oracle数据库的过程。 ### 一、CLOB类型的简介 CLOB是Oracle数据库中用于存储大量文本数据的一种数据类型,它可以...
在Java中,JDBC连接字符串是用于建立与特定数据库连接的重要组成部分。以下是九种不同数据库系统使用的JDBC连接字符串及其相关知识: 1. **Microsoft SQL Server 2000**: - 驱动类:`...
9. **CONCAT**: 将两个或多个字符串拼接成一个字符串。例如,`CONCAT('Hello', ' ', 'World')`的结果是"Hello World"。 10. **COS**: 计算角度的余弦值。例如,`COS(PI()/2)`的结果接近于0。 11. **COSH**: 计算...
3. **配置环境变量**:可能需要设置系统环境变量,如`DB2_HOME`指向驱动安装目录,以及`PATH`中添加相关可执行文件路径。 4. **注册驱动**:对于ODBC驱动,需要在ODBC数据源管理器中创建新的数据源,指定驱动和...
对于DB2,连接字符串是这样的: ```java Class.forName("com.ibm.db2.jdbc.app.DB2Driver").newInstance(); String url = "jdbc:db2://localhost:5000/sample"; // sample 是数据库名称 String user = "admin...
6. **数据库连接字符串设置**:在应用程序连接DB2时,确保连接字符串中包含了适当的字符集信息,例如`charset=utf8`。 7. **系统级别的字符集设定**:检查操作系统的字符集设置,确保其兼容DB2的字符集需求。 8. *...
同样,`test8`声明了一个字符串变量`a`,用于存储查询结果: ```sql CREATE PROCEDURE test8 (IN sid INTEGER, OUT result VARCHAR(300)) LANGUAGE SQL BEGIN DECLARE a VARCHAR(300); SET result = ''; SELECT...
IBM DB2数据库连接需要`Com.ibm.db2.jdbc.net.DB2Driver`,连接字符串如下: ``` "jdbc:db2://192.9.200.108:6789/SAMPLE" ``` 8. **PostgreSQL**: PostgreSQL数据库使用`pgjdbc2.jar`中的`org.postgresql....
其他数据库系统如Firebird、Ingres、DB2等也有各自的连接字符串格式,这些格式通常基于它们各自的数据访问驱动程序(如ODBC或JDBC)。 理解并正确构造这些连接字符串对于开发者来说至关重要,因为它们是应用程序与...
1. 创建DB2Connection对象,指定正确的数据库连接字符串,包括服务器地址、端口、数据库名、用户名和密码。 2. 使用DB2Command对象创建SQL查询或存储过程,并设置相应的参数。 3. 使用DB2DataReader或DB2DataAdapter...
- 数据库连接字符串格式:通常形如`jdbc:db2://hostname:port/databaseName`。 - 用户名和密码:在建立连接时提供,用于验证身份。 - 配置参数:可以根据需要传递其他连接参数,如SSL加密、自动提交等。 总的来说,...
标量函数用于执行简单的数学、字符串或其他类型的运算。DB2与GreenPlum/PostgreSQL在这方面的实现相似,但在某些特定函数的支持程度上可能存在差异。 ##### 2.8.1 标量函数 - IBM DB2 vs PostgreSQL - **数学函数**...
- **函数解释:** 返回日期时间型、字符串、整数、十进制或双精度浮点数的字符串表示。 - **示例:** `SELECT CHAR(SALARY, ',') FROM BSEMPMS;` - **知识点:** CHAR 函数将数值类型的数据转换为字符串形式,并支持...
当DB2无法识别或翻译某个字符串值时,会将其设置为NULL。这可能发生在字符集不兼容或数据格式错误的情况下。 ### +43401608 - 在DB2未来发布的版本中将不支持指定的特性,IBM建议你停止使用这些特性 这是一个前瞻...
22. VARCHAR():返回可变长度的字符串,适用于日期、图形串或字符串。 23. UCASE() 或 UPPER():将字符串转换为大写。 24. TRUNCATE() 或 TRUNC():从数值的小数部分截断。 25. TIME():从日期值中提取时间。 26. ...
字符串常量超过了DB2允许的最大长度。 14. SQLCODE -103, SQLSTATE 42604: 数值常量&1无效。可能是数字格式错误或超出了数据类型的范围。 15. SQLCODE -104, SQLSTATE 42601: 令牌&1无效。有效令牌:&2。这表明...
1. **CHAR和VARCHAR**:CHAR是固定长度的字符串类型,而VARCHAR是可变长度的字符串类型。CHAR会填充空格以达到指定长度,而VARCHAR仅存储实际的字符数,节省存储空间。 2. **GRAPHIC和VARGRAPHIC**:这些是用于存储...
20. SQL33101520: 不能被翻译的字符串,因此被设置为NULL - 字符串转换失败,可能导致编码或字符集问题。 21. SQL33901569: 由于与DB2 2.2版本的子系统连接,所以可能存在字符转换问题 - 跨版本连接时,字符集兼容性...