Member 12929280 Ответов: 1

Преобразование varchar в int в предложении where


Привет, ребята! Я пытаюсь преобразовать переменную varchar в int в предложении where, но каждый раз, когда я пытаюсь, я получаю сообщение об ошибке: "преобразование не удалось при преобразовании значения varchar" общее количество мест "в тип данных int".


кто-нибудь может мне помочь??

Спасибо!

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

выбрать * из ( выбрать чайник, как 'чайник', имя 'имя', тип 'тип', как значение start_date 'дата начала', конечная_дата как 'дата окончания', модель 'модель', корпус тип, когда 'узкий' тогда (N_N_SEATS_SECTOR_L+N_N_SEATS_SECTOR_R)*N_ROWS еще (W_N_SEATS_SECTOR_C+W_N_SEATS_SECTOR_L+W_N_SEATS_SECTOR_R)*N_ROWS конец как 'число мест', корпус тип, когда 'узкий' тогда (N_N_SEATS_SECTOR_L+N_N_SEATS_SECTOR_R)*N_ROWS_w еще (W_N_SEATS_SECTOR_C+W_N_SEATS_SECTOR_L+W_N_SEATS_SECTOR_R)*N_ROWS_w конец как количество мест класса от самолета) а где литой( 'число мест' как int) &ГТ;= 200

Dave Kreskowiak

Иметь актерский состав в предложении WHERE-плохая идея. Это чрезвычайно замедляет ваш запрос, так как каждая строка в таблице должна иметь эту операцию приведения, выполняемую над ней, прежде чем она может быть оценена предложением WHERE. Это говорит о том, что у вас есть проблема с дизайном вашей базы данных.

Maciej Los

Что СУРБД?
Вы уверены, что приведенный выше запрос возвращает varchar?

1 Ответов

Рейтинг:
1

Michael_Davies

"Общее количество мест" - это строковый литерал, который не является числовым, он не может быть преобразован в число.

Попробуйте не использовать пробелы в ваших именах, измените;

(W_N_SEATS_SECTOR_C+W_N_SEATS_SECTOR_L+W_N_SEATS_SECTOR_R)*N_ROWS заканчивается как "общее количество мест"

К;

(W_N_SEATS_SECTOR_C+W_N_SEATS_SECTOR_L+W_N_SEATS_SECTOR_R)*N_ROWS заканчиваются как Total_Number_of_Seats

Затем:

где cast (Total_Number_of_Seats as int) >= 200