我目前正在使用DBI
模块连接到我的MSSQL数据库以从表中提取一些数据。
我想要提取的行包含大量文本(类型为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转换为不在字符之间插入空格的格式?
答案 0 :(得分:1)
除了LongReadLen
之外,您还需要设置LongTruncOk
。您告诉DBI,可以从数据库中删除长期结果,现在您需要告诉它您愿意接受多长时间的字符串。