C# union select适用于第一个命令,但不适用于第二个命令?

C# union select适用于第一个命令,但不适用于第二个命令?,c#,asp.net,sql,sql-server,C#,Asp.net,Sql,Sql Server,我在一个连接上总共运行了三个sql命令。当查询运行时,除了一件小事外,其他一切都能正常工作。最后一个命令上的UNION SELECT不会将“文本”附加到最后一条语句的末尾 SqlCommand commandtwo = new SqlCommand("SELECT PID = RIGHT(REPLICATE('0',8) + CAST(PID AS VARCHAR(8)),8) + ',' FROM dbo.MDRMASTER WHERE PARENTPID = @PARENTP

我在一个连接上总共运行了三个sql命令。当查询运行时,除了一件小事外,其他一切都能正常工作。最后一个命令上的UNION SELECT不会将“文本”附加到最后一条语句的末尾

        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);
我觉得这很奇怪,因为commandtwo很好用。我也觉得奇怪,为了让逗号在commandthree中起作用,我不得不写

= INST + ','
而不仅仅是

 + ','

为什么我会有这些奇怪的事情?还是因为我认为自己是初学者,我显然不知道这条规则是什么?我使用的是SQL Server 2008 R2,非常感谢。

工会应该会工作。检查“文本”位是否不在列表中。如果你的
INST
列被编入索引,它可能会对你的结果排序,这就是为什么它可能不在末尾。

INST的数据类型是什么


CAST(INST AS nvarchar)+',“
可能会起作用。

如何初始化@PARENTPID?您所说的“而不仅仅是
+”,“
”是什么意思?PARENTPID是一个通过文本框值运行的参数@Eben,如果您注意到在命令2中仅添加+','用逗号分隔值,而在命令三中,仅添加+','不起作用,我被迫右=INST+','使逗号起作用。我会尽快发布代码。谢谢