DB2中获取汉字的长度

参考:

http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0705nair/index.html?S_TACT=105AGX52&S_CMP=tut-cto

DB2 9 中基于字符的字符串函数


DB2 9 for Linux, UNIX, and Windows 的字符串单元分别为 OCTETS、CODEUNITS16 和 CODEUNITS32。

    对于单字节字符编码模式,一个字节组成一个字符,单字节字符串的长度与字符串的字节长度相同。对于图形字符串,两个字节组成一个字符,使用双字节数来表示字符串的长度。但是对于多字节编码,字符的字节长度随使用编码模式的不同而不同,每个字符的长度可能是一个字节或多个字节。


一个汉字在DB2中占3个字节

values length('我')
---------------------
3  


    字符串函数拥有数值规范,或者说结果是输入数据相关的数值。字符串长度单元属于数值。待执行的字符串操作可能导致不同的输出,取决于计算字符所使用的字符串长度单元。一些函数的输入是数值,比如字符串函数的起始、长度和偏移量参数。而其他一些函数的返回结果是数值,比如搜索字符串中指定的子字符串的出现位置,首先执行搜索然后结果返回为字符串长度单元中隐式或显式指定的数字。

    使用 OCTETS 作为字符串长度单元时,通过简单地计算字符串的字节数即可确定字符串的长度。CODEUNITS16 指定将 Unicode UTF-16 用于字符语义。同样,CODEUNITS32 指定使用 Unicode UTF-32 来理解多字节字符的字符边界。

  如果使用 CODEUNITS 来获取字符的长度,则用作字符串函数输入的 CODEUNITS 参数的不同会导致输出的不同。


--计算汉字的长度

values length('我',octets)
-----------------------
3
values length('我',codeunits16)
-----------------------
1
values length('我',codeunits32)
-----------------------
1



---求汉字的子字符串

--子字符串‘中国’

values substring('我爱你中国',4,2,codeunits16),从第四个汉字开始,往后去三个汉字。
--------------------
中国



还有字符处理函数:substr,locate。




  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用JDBC获取DB2的字段,你可以按照以下步骤进行操作: 1. 导入必要的包和类: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.Statement; ``` 2. 建立数据库连接: ```java String url = "jdbc:db2://hostname:port/databaseName"; String username = "yourUsername"; String password = "yourPassword"; Connection connection = DriverManager.getConnection(url, username, password); ``` 请将"hostname"替换为DB2服务器的主机名,"port"替换为DB2服务器的端口号,"databaseName"替换为要连接的数据库名称,"yourUsername"和"yourPassword"分别替换为您的DB2用户名和密码。 3. 创建Statement对象: ```java Statement statement = connection.createStatement(); ``` 4. 执行SQL查询语句: ```java String sql = "SELECT * FROM yourTableName"; ResultSet resultSet = statement.executeQuery(sql); ``` 请将"yourTableName"替换为您要查询的表的名称。 5. 获取结果集的字段信息: ```java ResultSetMetaData metaData = resultSet.getMetaData(); int columnCount = metaData.getColumnCount(); for (int i = 1; i <= columnCount; i++) { String columnName = metaData.getColumnName(i); String columnType = metaData.getColumnTypeName(i); int columnSize = metaData.getColumnDisplaySize(i); System.out.println("Column Name: " + columnName); System.out.println("Column Type: " + columnType); System.out.println("Column Size: " + columnSize); } ``` 上述代码通过ResultSetMetaData类获取结果集的字段信息,包括字段名称、字段类型和字段大小等。 6. 关闭连接和相关资源: ```java resultSet.close(); statement.close(); connection.close(); ``` 确保在使用完之后关闭连接和相关资源,以释放数据库资源和避免内存泄漏。 这就是使用JDBC从DB2获取字段信息的基本步骤。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值