как конвертировать nvarchar в int - PullRequest
1 голос
/ 01 марта 2020

Мне нужно получить данные в соответствии со столбцом nvarchar, который содержит числа. Я получаю эту ошибку: Ошибка преобразования при преобразовании значения nvarchar '362X' в тип данных int. Я попробовал это:

select  modelcode from model 
where  cast(modelcode as int )> 10000 - ERROR
where  cast(modelcode as bigint )> 10000 - ERROR
where  pws_modelcode+0 > 10000 - ERROR
order by ModelCode asc

Чего мне не хватает?

Ответы [ 2 ]

0 голосов
/ 01 марта 2020

Заменить все не числовые c символы, кроме знака минус, на ноль, а затем преобразовать в INT.

select  modelcode from model where  cast(REGEXP_REPLACE(modelcode,'^0-9-','') as int )> 10000 
0 голосов
/ 01 марта 2020

На SQL сервере вы можете использовать try_convert() или try_cast():

where try_cast(modelcode as int) > 10000

В других базах данных вы можете использовать case, возможно, с регулярными выражениями:

where (case when modelcode ~ '^[0-9]+$' then cast(modelcode as int) end) > 10000
...