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

时间:2012-05-03 03:33:28

标签: c# asp.net sql sql-server

我在一个连接上总共运行了三个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);

我觉得这很奇怪,因为commandtwo工作得很好。我也觉得很奇怪,为了让逗号在命令树中工作,我必须写

= INST + ','

而不仅仅是

 + ','

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

2 个答案:

答案 0 :(得分:0)

UNION应该工作。检查' TEXT'列表中的位不是。如果您的INST列已编入索引,则可能会对结果进行排序,这就是为什么它可能不在最后。

答案 1 :(得分:0)

INST的数据类型是什么?

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