2

正如标题所说,当我使用 sql between 子句时,我正在针对从低到高的地址范围运行它,并且我输入了一个在两者之外的数字并将行返回给我。我想知道为什么。

http://www.sqlfiddle.com/#!6/49467/2

快速点击查询,我正在使用地址编号4929并将行返回给我,其中地址范围的低位和高位数字分别是400498

这是查询:

SELECT 

ZipCodeLow ,
ZipCodeHigh ,
ZipExtensionLow ,
EndingEffectiveDate ,
BeginningEffectiveDate ,
AddressRangeLow ,
AddressRangeHigh ,
StreetName ,
City ,
ZipCode ,
Zip4,
Zip4High

FROM BoundTable

WHERE 

('68503' BETWEEN ZipCodeLow AND ZipCodeHigh) AND 
('4929' BETWEEN [AddressRangeLow] AND [AddressRangeHigh]) AND
([StreetName] = '32ND') AND
(GETDATE() BETWEEN [BeginningEffectiveDate] AND [EndingEffectiveDate])
4

1 回答 1

2

首先将 4929 转换为数字,然后运行查询:

  SELECT 
  ZipCodeLow ,
  ZipCodeHigh ,
  ZipExtensionLow ,
  EndingEffectiveDate ,
  BeginningEffectiveDate ,
  AddressRangeLow ,
  AddressRangeHigh ,
  StreetName ,
  City ,
  ZipCode ,
  Zip4,
  Zip4High
  FROM BoundTable

  WHERE 
  ('68503' BETWEEN ZipCodeLow AND ZipCodeHigh) AND 
  (convert(numeric,'4929') BETWEEN [AddressRangeLow] AND [AddressRangeHigh]) AND
  ([StreetName] = '32ND') AND
  (GETDATE() BETWEEN [BeginningEffectiveDate] AND [EndingEffectiveDate])
于 2013-08-26T14:06:26.690 回答