我对使用Oracle 9i作为其数据库的传统ASP应用程序遇到了一个奇怪的问题。我们最近让DBA将VARCHAR2字段的大小从VARCHAR2(2000)增加到VARCHAR2(4000)。问题是即使插入的字符串大于2000个字符,也会在字符串中的2001字符位置插入NULL字节(ASCII:0)。例如,如果应用程序用2500个字符的字符串向表中插入新记录,则2501个字符存储在VARCHAR2字段中,NULL字符插入到2001字符位置。 NULL字节不是保存到数据库的原始发布数据的一部分,并且正在导致我们一些悲伤。你们有没有遇到过这样的事情?该应用程序正在使用MSDAORA ODBC驱动程序,并且我在考虑驱动程序正在向其字符串缓冲区添加终止空字符,其中可能的内部限制为2000个字符。Oracle将NULL字节(ASCII:0)添加到varchar2字符串
任何想法?
谢谢。
感谢大家的回复。罪魁祸首是“用于Oracle的Microsoft ODBC”驱动程序。该应用程序未使用MSDAORA。重新配置ODBC DSN以使用Oracle 10g驱动程序解决了该问题。 – 2009-06-17 13:58:22