我正在使用N函数来更新SQL查询中的NClob。但是,update using N函数不允许我更新超过1900个字符。在删除N函数之后。我能够将超过1900个字符更新到我的NClob列中。
有人能告诉我为什么我不能使用N函数更新NClob列吗?有什么限制吗?
代码是
更新设置= StringBuilder updateQuery (“StringBuilder table_name set column_name =");updateQuery.append(”= N'").append(NClobContent).append("'").append(“,");ps.execute(updateQuery.toString());
发布于 2015-01-13 03:10:12
如上所述,in the documentation
N表示文字使用的是国家字符集,它将是UTF8或AL16UTF16 (默认情况下是后者),因此即使您的长字符串少于4000个字符,它仍然可以超过4000个字节。
如果没有N,字符串将以数据库字符集进行解释,然后将文字转换为NCLOB中存储的国家字符集。因此,您可能会有一个更长的字符串-如果您的数据库字符集是单字节的,那么您最多可以保存4000个字符,尽管NClobCOntent变量中的任何多字节字符都会被损坏。
将您的变量传递给数据库as a stream,而不是使用N语法;您可能会发现this answer是一个有用的起点。或者,您也可以使用this approach,这取决于字符串长度。
https://stackoverflow.com/questions/27879899
复制相似问题