从DB返回时文本数据被截断

时间:2012-07-24 16:00:56

标签: php sql-server string casting truncate

当我在php中使用MSSQL来读取具有详细内容的字段时,我收到错误

  

警告:mssql_query()[function.mssql-query]:无法使用DB-Library(例如ISQL)或ODBC 3.7或更早版本

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

SELECT CAST(Content AS TEXT) AS Content FROM myTable

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

由于

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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

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