Perl 没有从数据库中读取全部值

Perl Not Reading Full Values from Database

我目前正在使用 DBI 模块连接到我的 MSSQL 数据库以从 table.

中提取一些数据

我试图拉取的行包含大量文本(它是 ntext 类型,最多可包含 6Mb 的文本)。

目前我的查询非常简单:

my $sql = "SELECT TOP 1 [reportRow] from UsageReport";

而且我还为数据库选项启用了 LongTruncOk

执行查询后,我想显示行。

while ( my @row = $sth->fetchrow_array ) {
   print "@row\n";
}

不幸的是,它以一种非常奇怪的方式显示数据,每个字符之间都有空格,并且它只检索前 40 个字符。

< r e p o r t > < r e p o r t h e a d e r > < m o n t h > O c t o b e r   2 0

如果我用File::Slurp输出@row到一个文件,它显示为

数据被截断显示怪异是什么原因?

编辑:如何将 UTF16 转换为不在字符之间插入空格的格式?

除了 LongTruncOk 之外,您还需要设置 LongReadLen。您已经告诉 DBI 可以从数据库中截断长结果,现在您需要告诉它您愿意接受多长的字符串。