我正在尝试通过C#应用程序中的SQL查询来更新COBOL压缩字段。目前,COBOL压缩字段存储在MS SQL数据库的字符列(char(50))中。
COBOL数据类型=4字节二进制数(“PIC S9(9) COMP”):
我可以使用下面的语句来提取数据。我不确定如何将此过程反向进行数据更新。
CAST(CAST(SUBSTRING({列名},{Start},4) AS VARBINARY(4)) AS BIGINT) AS {Alias_Name}
有什么建议吗?
谢谢,
布伦南·曼
发布于 2010-02-17 21:38:08
答案来得太晚。但不管怎样。这是这样的:如果它确实是(9)而不是COMP-3,那么它就不是一个“险恶的”S9压缩字段,而是一个简单的4字节整数!
发布于 2018-03-16 07:09:59
以防有人需要这个。这就是C#的解决方案
public string ConvertToFourByteBinaryNumber(Int32 value)
{
byte[] intBytes = BitConverter.GetBytes(value);
Array.Reverse(intBytes); // IsLittleEndian
return Encoding.Default.GetString(intBytes);
}
public string ConvertToEightByteBinaryNumber(long value)
{
byte[] intBytes = BitConverter.GetBytes(value);
Array.Reverse(intBytes); // IsLittleEndian
return Encoding.Default.GetString(intBytes);
}https://stackoverflow.com/questions/1711918
复制相似问题