Определить, где условие между указанным интервалом в SQL? - PullRequest
0 голосов
/ 03 ноября 2019

Я хочу выбрать от 1700300000 до 1700500000, а также тип MemberID: nvarchar (50)

select * from tblmember
where cast(MenmberID as bigint) > 1700300000 and cast(MemberID as bigint) < 1700500000

ошибка: сообщение 8114, уровень 16, состояние 5, строка 25
Ошибка преобразования данныхвведите nvarchar в bigint.

Ответы [ 3 ]

0 голосов
/ 03 ноября 2019

Ваша проблема в том, что у вас есть нечисловые данные в таблице. Если данные не числовые, преобразование не выполняется.

В дополнение к точным ответам Гордона, вы можете попробовать следующее:

select * from tblmember
where 
(case when isnumeric(MemberID) = 1  then cast(MemberID as bigint) end) > 1700300000 and 
(case when isnumeric(MemberID) = 1  then cast(MemberID as bigint) end) < 1700500000
;
0 голосов
/ 03 ноября 2019
select * from tblmember
where case when isNumeric(MemberID) then cast(MenmberID as bigint)
else 0 end between  1700300000 and 1700500000;

что-то в этом роде? (если вы хотите / не хотите крайние случаи, тогда вы можете играть с -1 / + 1 на значениях). А как насчет 1700524234.3? Это нормально с тобой или должно быть целым числом?

0 голосов
/ 03 ноября 2019

Использование try_cast():

select *
from tblmember
where try_cast(MemberID as bigint) > 1700300000 and 
      try_cast(MemberID as bigint) < 1700500000

Я не знаю, как выглядят ваши данные, но вы можете использовать сравнение строк:

select *
from tblmember
where MemberID > '1700300000' and 
      MemberID < '1700500000'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...