2012-05-03 1 views
0

У меня есть в общей сложности три команды sql, работающие на одном соединении. Когда запрос выполняется, все работает отлично, за исключением одной крошечной вещи. UNION SELECT в последней команде не будет прикреплять «ТЕКСТ» в конце последнего оператора.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 Большое вам спасибо.

+0

Как инициализируется @PARENTPID? –

+0

Что вы подразумеваете под «вместо« + »,« »? –

+0

PARENTPID - это параметр, который проходит через значение текстового поля. @Eben, если вы заметили, что в commandtwo только добавление + ',' разделяет значения запятыми, тогда как в команде три просто добавление + ',' не будет работать, я вынужден правильно = INST + ',' для того, чтобы запятые работали , Я отправлю код, как только смогу. Благодарю. – javasocute

ответ

0

Какой тип данных INST?

CAST(INST AS nvarchar) + ',' может работать.

0

UNION должен работать. Убедитесь, что бит «ТЕКСТ» отсутствует в списке. Если ваш индекс INST проиндексирован, он, вероятно, заказывает ваши результаты, поэтому он не может быть в конце.

Смежные вопросы