Member 13677823 Ответов: 1

Как я могу решить свою проблему?


Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value 'N/A' to data type int.


Что я уже пробовал:

выберите (случай, когда TblTable1.iSrNo равно нулю, а затем 'N/A' else TblTable1.iSrNo end)как 'SR. No.',
(случай, когда TblTable1.запись CNAME null тогда "н/д" еще TblTable1.запись CNAME конец)как 'имя',
(случай, когда TblTable2.iSrNo null тогда "н/д" еще TblTable2.iSrNo конец)как 'старший нет.,
(случай, когда TblTable2.cPlace равен нулю, то 'N/A' else TblTable2.cPlace end)как 'Place',
(случай, когда TblTable2.iSalary равен нулю, то 'N/A' else TblTable2.iSalary end)как 'зарплата'

от TblTable1 полное внешнее соединение TblTable2 ВКЛ
tbltable1.isrno=tbltable2.iSrNo

Richard MacCutchan

Вы не можете преобразовать буквенные символы в целочисленное значение.

1 Ответов

Рейтинг:
2

CHill60

Вы должны решить, что будет возвращено из вашего запроса - текст или цифры.

Добавление "N/A" на этом уровне - это неправильный способ сделать это-это относится к вашему уровню пользовательского интерфейса.

Также рассмотрите возможность использования правильной функции(ов) вместо CASE, т. е. Функции SQL ISNULL(), NVL(), IFNULL() и COALESCE() [^]

Если вы не хотите возвращать нули, используйте что - то вроде этого (зависит от ваших типов столбцов, какие значения вы на самом деле туда помещаете- просто не смешивайте текст и числа)

select Isnull(TblTable1.iSrNo, 0) as [Sr. No.],
 Isnull(TblTable1.cName, 'N/A') as [Name],
 Isnull(TblTable2.iSrNo, 0) as [Sr. No.2],
 Isnull(TblTable2.cPlace, 'N/A') as [Place],
 Isnull(TblTable2.iSalary, 0)as 'Salary'
Если вы абсолютно, действительно хотите вернуть "N/A", то вам придется преобразовать все числа в varchars - Yuk. Определенно не рекомендуется