使用二进制值转换字符串

时间:2011-10-04 11:11:34

标签: sql-server-2008 db2

这是将字符串从DB2转换为SQL Server的问题。

在DB2上,您可以拥有一个包含字符串和二进制数据混合的列(例如,在COBOL中使用REDEFINS将字符串和十进制值组合到DB2列中)。

这将在数据复制期间产生不可预测的结果,因为二进制零(0x00)被视为字符串终结符(在C系列软件语言中)。

SQL Server和DB2都能够在固定长度char列的中间存储二进制零,而不会出现任何问题。

有没有人遇到过这个问题?我看到它的唯一方法就是修改COBOL程序和数据库模式,所以如果你有一个包含14个字符的列,其中前10个是字符串,最后4个是小数,请将其拆分分成两列,每列包含一个“部分”。

1 个答案:

答案 0 :(得分:1)

如果你只想传输1:1的数据,我只需要创建一个长度相等的二进制(x)字段,varbinary(x)就长度不同而言。

如果需要轻松访问存储的字符串和十进制值,可以创建一些计算列,从二进制(x)字段中提取字符串/十进制值,并将它们表示为普通列。这将允许您进行简单的1:1迁移,同时对内容进行简单且强类型的访问。

最佳方法是在SQL Server数据库上创建强类型列,然后在COBOL或用于执行一次性迁移的任何脚本/系统中执行实际迁移。您仍然可以存储二进制文件(x)以保存原始值,以防发生转换错误,或者您需要将原始值提供给COBOL系统。