SQL 执行返回的结果与直接在 MS SQL Server Management Studio 中执行不同

标签 sql sql-server tsql sql-server-2008 sql-server-2012

我对 SQL 很困惑,所以也许我做错了什么。

我试图构建一个查询,该查询将显示多个 SELECT 的结果。代码很简单,但大体上是这样的:

将结果放入 sql 文本选项

select  MessageId from   NsDelivery..NudgeResponseDump (NOLOCK) where Pk_RowId = 28901649

输出

0:1550774328341685 9d012f009d012f

没有结果进入 sql 文本选项

    select  MessageId from   NsDelivery..NudgeResponseDump (NOLOCK) where Pk_RowId = 28901649

输出

0:1550774328341685

我不知道为什么第二个选项中缺少字符串数据请给我有效的解释......

最佳答案

我猜字符串的两部分之间有一个空字符(又名空终止符)(不是 NULL 值,而是 CHAR(0))。该字符导致字符串在网格模式的结果中被截断。有资料here . 本质上,字符串的最后一部分在那里,但在可视化中它由于空字符而被截断。您可以通过将字符串转换为 VARBINARY 来测试它,空字符将显示为 00

关于SQL 执行返回的结果与直接在 MS SQL Server Management Studio 中执行不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54860949/

相关文章:

sql - 使用 SQL,如何使用行自己的值来更新行?

c# - 存储过程:使用Return还是选择Select?

c# - 使用 Create.Table、FluentMigrator 时向表列添加约束

c# - 多个 RadioButtonList 并插入到 SQL 中

mysql - 我的 SQL 查询这么慢是否正常?

sql-server - 使用传递查询从 ms access Access oracle 数据库表

sql-server-2008 - MS SQL Server - 将结果导出到没有 "NULL"的文件

PHP mySQL - 如何仅打印共享共同名称的两个事物的不同属性?

sql - TeraData SQL中 "TOP"和 "SAMPLE"之间的区别

sql-server - SQL Server - 将 Table1 连接到 Table2 ON substring(T1.Field) = T2.ID