Попытка избавиться от нежелательных записей в запросе - PullRequest
0 голосов
/ 01 июля 2011

У меня есть следующий запрос

Select * from Common.dbo.Zip4Lookup where 
zipcode='76033' and 
StreetName='PO BOX' and 
'704' between AddressLow and AddressHigh and 
(OddEven='B' or OddEven = 'E')

Столбцы AddressLow и AddressHigh являются полями varchar (10).

Возвращенные записи:

AddressLow   AddressHigh
------------ ------------
1            79
701          711

Вторая желаемая запись Как мне избавиться от первой записи.

Ответы [ 2 ]

2 голосов
/ 01 июля 2011

Проблема в том, что SQL использует сравнение строк вместо числового сравнения. Это потому, что AddressLow / High равны varchar, а не int.

Пока AddressLow / High содержат числа, это должно работать:

Select * from Common.dbo.Zip4Lookup where 
   zipcode='76033' and 
   StreetName='PO BOX' and 
   704 between 
       CAST(AddressLow as INT) and 
       CAST(AddressHigh as INT) and 
   (OddEven='B' or OddEven = 'E')
1 голос
/ 01 июля 2011

Проблема в том, что ваше условие соответствует первой записи в 7 в начале 79, потому что это строковое значение. Самый простой способ - ИМХО изменить тип данных на какой-нибудь числовой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...