CONVERT и CAST для создания плоского вида - невозможно преобразовать nvarchar в числовой - PullRequest
0 голосов
/ 17 октября 2019

Я создаю представления для приведения varchar в числовое значение (скажем, поле vw_number) и даты для преобразования в стиль США (101), т. Е. Мм / дд / гггг (поле dt_view).

Вид создается отлично, и данные выглядят хорошо, но когда я использую эти поля для фильтрации данных, он не работает.

select * from view where vw_number = 20

Выдает ошибку:

не может конвертировать nvarchar в числовой.

select * from view where dt_view >= '10/01/2019'

Запрос работает нормально, но не работает должным образом. dt_view - это поле даты в таблице.

1 Ответ

0 голосов
/ 17 октября 2019

Попробуйте

select * from view where CAST(vw_number AS INT) = 20 -- cast to int

select * from view where dt_view >= '20191001' -- just to avoid locale problems

Конечно, приведение не удастся, если у вас есть нечисловые данные.

Чтобы найти нечисловые данные, попробуйте

select * from view where vm_number not like '%[^0-9]%'
...