十六进制格式的DB2查询结果——需要字符/字符串

十六进制格式的DB2查询结果——需要字符/字符串,db2,db2-400,Db2,Db2 400,我有一个查询,可以使用python SQL tester在DB2表上运行,它返回我要查找的字符串值。 但是,当我直接在数据库上运行它时,它会返回一个十六进制值。如果您能以字符串形式获得结果,我们将不胜感激 以下是字段定义: ORCTL CCDATA 243 A 14 256 Order Control File Data 我对iSeries的疑问是: select ccdata from ORCTL where ccctlk = 'BUYRAK'

我有一个查询,可以使用python SQL tester在DB2表上运行,它返回我要查找的字符串值。
但是,当我直接在数据库上运行它时,它会返回一个十六进制值。如果您能以字符串形式获得结果,我们将不胜感激
以下是字段定义:

ORCTL      CCDATA         243      A   14  256 Order Control File Data 
我对iSeries的疑问是:

select ccdata from ORCTL where ccctlk = 'BUYRAK'

我猜它不会回来了

相反,它正在返回EBCDIC

您的列可能被标记为CCSID 65535,它告诉系统不要翻译它

解决此问题的正确方法是确保使用适当的CCSID标记列;例如,37分是美国英语


另一种方法是在您使用的驱动程序设置中查找“强制转换”选项

我猜它不会回来了

相反,它正在返回EBCDIC

您的列可能被标记为CCSID 65535,它告诉系统不要翻译它

解决此问题的正确方法是确保使用适当的CCSID标记列;例如,37分是美国英语


另一种方法是在您使用的驱动程序设置中查找“强制转换”选项

使用您的查询,您可以使用另一个CCSID强制转换字符串,例如:

select cast(ccdata as char(14) CCSID 37) from ORCTL where ccctlk = 'BUYRAK'

使用查询,您可以使用另一个CCSID强制转换字符串,例如:

select cast(ccdata as char(14) CCSID 37) from ORCTL where ccctlk = 'BUYRAK'

好的,这是有道理的。这是AS/400上的一个表,所以我不能真正更改列。在DB2中有没有一种方法可以将这个值“转换”为可读文本?好的,这是有意义的。这是AS/400上的一个表,所以我不能真正更改列。在DB2中有没有办法将这个值“转换”成可读文本?这个问题解决了吗?解决办法是什么?我有一个问题:这个问题解决了吗?解决办法是什么?我这里有一个问题:相同的解决方案在这里不起作用:相同的解决方案在这里不起作用: