формат tsql в процентах - PullRequest
       4

формат tsql в процентах

2 голосов
/ 21 марта 2011

У меня есть следующее заявление sql:

SELECT 1, 2, 3

UNION ALL

SELECT CAST(1 AS VARCHAR) + '%',CAST(2 AS VARCHAR) + '%',CAST(3 AS VARCHAR) + '%'

И я получаю следующую ошибку:

Conversion failed when converting the varchar value '1%' to data type int.

Я мог бы изменить первый оператор выбора на «1», «2», «3», но у меня много объединений и только одна строка, которая должна иметь формат процента. Есть ли другие доступные альтернативы?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 21 марта 2011

Вы нуждаетесь в CAST всех предложениях объединения.

Каждая строка в окончательном выводе с имеет тип данных с самым высоким приоритетом . int больше varchar, поэтому 1% приводится к int с очевидными результатами

select cast(1 as varchar), cast(2 as varchar), cast(3 as varchar)
union all
select cast(1 as varchar) + '%',cast(2 as varchar) + '%',cast(3 as varchar) + '%'

Или: вы не можете иметь разные типы данных / форматы в одном столбце.

Конечно, это пример, но смешивать целые и форматированные числа не имеет смысла, даже если SQL разрешил это

1 голос
/ 21 марта 2011

попробуйте это

select cast(1 as varchar) ,cast(2 as varchar), cast(3 as varchar)

union all

select cast(1 as varchar) + '%',cast(2 as varchar) + '%',cast(3 as varchar) + '%'

Причиной ошибки является то, что вы выше выбрали 1,2,3, который является целым числом, и вы объединяетесь со значением varchar

, поэтому решениевам нужно конвертировать вышеупомянутый тип данных в varchar

Второе решение -

Select cast(col1 as varchar),cast(col2 as varchar),........... from
(
   .. all your union large query you have writting
) d

union all
select cast(1 as varchar) + '%',cast(2 as varchar) + '%',cast(3 as varchar) + '%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...