当前位置: 首页 > 知识库问答 >
问题:

从数据库返回时,文本数据被切断

李胤
2023-03-14

当我在php中使用MSSQL读取一个包含很长内容的字段时,我得到一个错误

警告:mssql_query()[function.mssql查询]: Unicode仅排序规则中的Unicode数据或ntext数据不能使用DB-库(如ISQL)或ODBC版本3.7或更早版本发送到客户端

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

SELECT CAST(Content AS TEXT) AS Content FROM myTable

然而,我遇到的另一个问题是,文本数据在4096个字符之后被截断。是否有进一步读取文本的方法,或者有其他方法来强制转换返回的数据?

谢谢

共有1个答案

伏德义
2023-03-14

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

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

还显示4096吗?我打赌不会。

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

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

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

 类似资料:
  • 我得到一个错误 代码如下: 这太奇怪了,因为数据被正确地添加到我的数据库中,其他时候我使用相同的代码(用于用户注册),它没有任何问题...我检查了所有的东西,我找不到问题。 我得到的错误是: 警告:mysqli_num_rows()期望参数1是mysqli_result,布尔值在第58行的C:\xampp\htdocs\Dream Pizza\add_order.php中给出 连接到数据库时出错!

  • 问题内容: 如何从AsyncTask中获取数据?我的MainActivity正在调用触发AsyncTask的DataCall.getJSON函数,但是我不确定如何将数据返回到原始Activity。 调用DataCall的MainActivity应该返回一个字符串并将其保存在 数据通话: 问题答案: 对我来说,关键是创建一个名为URLWithParams的类或其他类,因为AsyncTask将只允许发

  • 问题内容: 我正在尝试使用Node.JS应用程序来发出和接收API请求。它使用Axios对其接收的API调用接收的数据向另一个服务器发出get请求。第二个片段是脚本从调用中返回数据的时间。它实际上会接收并写入控制台,但不会在第二个API中将其发送回去。 … 我知道这是错误的,我只是想找到一种使它起作用的方法。我似乎只能从中获取数据的唯一方法是通过console.log,这对我的情况没有帮助。 问题

  • 我正在尝试使用Node.JS应用程序发出和接收API请求。它使用Axios向另一台服务器发出get请求,并从它接收的API调用中接收数据。第二个代码段是脚本从调用返回数据的时间。它实际上会将其写入控制台,但不会在第二个API中将其发送回。 ... 我知道这是错误的,我只是想找到一种方法让它发挥作用。我能从中获取数据的唯一方法似乎是通过console.log,这对我的情况没有帮助。

  • 简介 在 Swoft 2.0.2 版本之前,连接池中没有数据库切换功能,这导致了不同数据库需要配置多个连接池,大大增加了维护成本。所以在 2.0.2 开始新增了切换数据库功能。你可以在链式操作中使用 db() 方法进行指定,这显然不够灵活难以维护,下面推荐一个根据上下文切换数据的操作。 Swoft 版本需 >= 2.0.2 DbSelector 实现 使用 DbSelector 需实现 Swoft

  • 问题内容: 我想检查Firebase中是否已经有一个具有所选用户名的用户,并且我已经创建了一个执行此操作的函数。这是函数的代码: 问题在于该方法是异步方法,因此我无法使用您可以在上面看到的策略。但是我无法从Firebase方法返回值,因为它是空方法… 如何解决此问题? 还有一件事。如果连接错误或与服务器之间没有连接,如何也返回false? 问题答案: 您必须自己使用异步完成处理程序,并验证是否存在