使用CodePage的.Net BlockCopy和DB2字符转换

时间:2013-03-06 05:30:40

标签: c# .net

据我所知,可以在数据库的不同表中以不同方式设置排序规则。从What does character set and collation mean exactly?

了解整理

有一个查询从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

问题

@AlexFilipovici [.Net BlockCopy]给出的问题Get Byte[] from Db2 without Encoding答案与CAST结果相比提供了不同的结果。如果没有codepage关联,为什么会这样呢?

基于 National language support - Character conversion

  

位数据(定义为FOR BIT DATA,BLOB或二进制字符串的列)与任何字符集都没有关联。

参考

  1. Get Byte[] from Db2 without Encoding
  2. Default code page for new databases is Unicode
  3. National language support - Character conversion

2 个答案:

答案 0 :(得分:1)

要在SQL Server中找出数据库级别的排序规则,请尝试以下方法:

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

更多:DATABASEPROPERTYEX

答案 1 :(得分:1)

回答你的问题:

#1:在基于字符的数据类型(在DB2中)上指定FOR BIT DATA意味着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');