. net BlockCopy和DB2字符转换使用CodePage

本文关键字:CodePage 转换 字符 BlockCopy DB2 net | 更新日期: 2023-09-27 18:02:42

我知道在数据库的不同表中可以设置不同的排序。字符集和排序的确切含义是什么?

有一个查询从一个char结果执行CAST,如下所示。不涉及到桌子。我猜,应用的编码将基于数据库级别的排序。这个假设正确吗?

SELECT  CAST ( SSS.id_encrypt ('E','0000000{0}') AS CHAR(100) FOR BIT DATA)  
AS ENCRYPT_ID FROM FFGLOBAL.ONE_ROW FETCH  FIRST 1 ROW ONLY

在问题Get Byte[]从Db2没有编码的答案@AlexFilipovici[。净BlockCopy与净CAST的结果不同。如果没有相关的codepage,为什么会这样?

基于国家语言支持的

-字符转换

位数据(列定义为FOR Bit data,或blob,或二进制字符串)不与任何字符集相关联。

参考

  1. 从Db2中获取Byte[]而不需要编码
  2. 新数据库的默认代码页是Unicode
  3. 国家语言支持-字符转换

. net BlockCopy和DB2字符转换使用CodePage

查看SQL Server中数据库级别的排序规则:

SELECT DATABASEPROPERTYEX('databasename', 'Collation');

: DATABASEPROPERTYEX

回答您的问题:

#1:在基于字符的数据类型上指定FOR BIT DATA(在DB2中)意味着DB2存储/返回原始数据而不关联代码页(即它只是一个字节串,不会在客户机和服务器之间进行任何代码页转换)。

#2:在DB2 for Linux, UNIX和Windows中,您可以通过查询SYSIBMADM.DBCFG

来确定数据库的排序。
 select name,value
  from sysibmadm.dbcfg
 where name in ('codepage','codeset');

#3: Per @Iswanto San:

SELECT DATABASEPROPERTYEX('databasename', 'Collation');