【发布时间】:2013-04-23 07:28:53
【问题描述】:
当我尝试在 DB2 中的列中插入一个字符串值时,它被定义为 CHAR(15) FOR BIT DATA,我注意到它被转换为其他格式,可能是十六进制。
在检索数据时,我得到一个字节数组,并在尝试使用 System.Text.Encoding.ASCII.GetString 将其转换回 ASCII 时,我得到了一些垃圾字符串字符。
有人遇到过这个问题吗? 有什么解决办法吗?
提前致谢。
【问题讨论】:
当我尝试在 DB2 中的列中插入一个字符串值时,它被定义为 CHAR(15) FOR BIT DATA,我注意到它被转换为其他格式,可能是十六进制。
在检索数据时,我得到一个字节数组,并在尝试使用 System.Text.Encoding.ASCII.GetString 将其转换回 ASCII 时,我得到了一些垃圾字符串字符。
有人遇到过这个问题吗? 有什么解决办法吗?
提前致谢。
【问题讨论】:
For Bit Data 防止客户端和服务器之间的代码页转换。这通常用于插入二进制数据,而不是字符串。
请看这个论坛,很多案例都被提出并解决了:http://www.dbforums.com/db2/1663992-bit-data.html
您最终可以对数据库页面进行强制转换(这取决于您的平台)
CAST(c1 AS CHAR(n) FOR SBCS DATA)
CAST (<forbitdataexpression> AS [VARCHAR|CHAR][(<n>)] FOR [SBCS|DBCS] DATA)
参考文献
【讨论】: