Ошибка SQL при преобразовании varchar в int в строке при выборе count - PullRequest
0 голосов
/ 14 мая 2018

У меня есть SQL-запрос, который используется для создания текстового файла со строкой заголовка, подробными строками и, наконец, строкой с сообщением «X строк выбрано». Поскольку для отчета, в котором в качестве разделителя используется заглавная чедилья, я выбираю всю строку заголовка как одну строку (усеченная многоточием для экономии места):

SELECT 
       'REC_TYPE'+CHAR(199)+'PLAN_ID'+CHAR(199)+...+'DATE_ANSWERED'
UNION ALL

SELECT  REC_TYPE+CHAR(199)+
        PLAN_ID+CHAR(199)+
        ...+
        Convert(char(10),DATE_ANSWERED,101)

FROM
       #My_Temp_Table  

UNION ALL

SELECT COUNT(*) + 'rows selected'

FROM
       #My_Temp_Table

Если я не включаю счетчик строк с помощью кода SQL, все работает нормально. Однако по какой-то причине добавление строки подсчета строк через объединение приводит к тому, что запрос выдает ошибку преобразования:

Conversion failed when converting the varchar value 'REC_TYPEÇPLAN_IDÇ...DATE_ANSWERED' to data type int.

Что я могу сделать для подсчета строк, чтобы предотвратить эту ошибку?

1 Ответ

0 голосов
/ 14 мая 2018

Поскольку COUNT возвращает int, а затем вы пытаетесь добавить это в строку. Все будет пытаться преобразоваться в int из-за приоритета типа данных.

Просто измените свой последний запрос на что-то вроде этого.

SELECT convert(varchar(10), COUNT(*)) + 'rows selected'
...