0

当我在 php 中使用 MSSQL 读取内容很长的字段时,出现错误

警告:mssql_query() [function.mssql-query]: Unicode-only collat​​ion 中的 Unicode 数据或 ntext 数据无法发送到使用 DB-Library(例如 ISQL)或 ODBC 版本 3.7 或更早版本的客户端

我在网上搜索并找到解决这个问题的方法,并发现我需要将结果转换为可读的文本。

SELECT CAST(Content AS TEXT) AS Content FROM myTable

但是,我遇到的另一个问题是文本数据在 4096 个字符后被截断。是否有进一步阅读文本,或转换返回数据的其他选项?

谢谢

4

1 回答 1

1

如果您在 Management Studio 中计算字符数,请尝试:

SELECT LEN(Content), DATALENGTH(Content) FROM dbo.myTable;

那仍然显示4096吗?我打赌不会。

我认为您不想转换为 TEXT。我假设您使用的是 NTEXT,因为您可能有 Unicode 字符。转换为 TEXT 将消除任何双字节字符并实际更改您的数据。也许你可以从你的应用程序中尝试这个:

SELECT CONVERT(NVARCHAR(MAX), Content) FROM dbo.myTable;

并且不要依赖 Management Studio 的输出来证明数据库中的实际内容。默认情况下它会被截断,并且即使您更改默认值(不同的字符数取决于结果到文本或结果到网格),它也会被限制在一个固定的最大值。如果您想知道一列中有多少数据,请询问 SQL Server(就像我在上面所做的那样),而不是 Management Studio。

于 2012-07-24T16:33:40.200 回答