联合选择适用于第一个命令,但不适用于第二个命令

本文关键字:适用于 命令 不适用 第二个 第一个 选择 | 更新日期: 2023-09-27 18:32:55

我在一个连接上运行了三个sql命令。运行查询时,除了一件小事外,一切都可以完美运行。最后一个命令上的 UNION SELECT 不会在最后一个语句的末尾附加"TEXT"。

        SqlCommand commandtwo = new SqlCommand("SELECT PID = RIGHT(REPLICATE('0',8) + CAST(PID AS VARCHAR(8)),8) + ',' FROM dbo.MDRMASTER WHERE PARENTPID = @PARENTPID UNION SELECT 'TEXT'", con);
        SqlCommand commandthree = new SqlCommand("SELECT INST = INST + ',' FROM dbo.MDRMASTER WHERE PARENTPID = @PARENTPID UNION SELECT 'TEXT'", con);

我觉得这很奇怪,因为命令二工作得很好。我也觉得很奇怪,为了让逗号在命令三中工作,我不得不写

= INST + ','

而不仅仅是

 + ','

那么,为什么会发生这些奇怪的事情呢?或者因为我认为自己是初学者,我显然不知道这个规则是什么?我正在使用SQL Server 2008 R2 非常感谢。

联合选择适用于第一个命令,但不适用于第二个命令

INST的数据类型是什么?

CAST(INST AS nvarchar) + ','可能有效。

UNION 应该可以工作。 检查"文本"位是否不在列表中。 如果您的INST列已编入索引,则可能会对结果进行排序,这就是为什么它可能不在末尾的原因。