2009-01-13 50 views

回答

1

如果他们是针对数字字段,他们会按照您的预期工作。如果它是针对字符类型的数据字段,则它们将按字母顺序工作。所以如果你想要大于(>)10并且小于(<)20,那么你可能得到11,110,123456作为响应。

这就是为什么存储你想要做数学计算或与varchar(或任何其他类型的char数据)比较的数字总是一个坏主意。只有不需要数学计算的数字(电话,邮编,ssn等)应该以这种方式存储,并且这些数字应始终存储在字符类型字段中以计入前导零。

1

排序(因而<>运营商)取决于你的SQL Server排序规则: http://msdn.microsoft.com/en-us/library/ms144250(SQL.90).aspx

而对于整理你必须找到在网络上的规则。请注意,它们通常非常复杂。为了你的缘故,我会尽量避免<和>比较VARCHAR,除非你确实需要。

1

感谢您的快速响应。

我问的原因是我需要查询英国邮政编码的数据库表。问题表中有两个邮政编码列,“from_postcode”和“to_postcode”,我需要确定给定的邮政编码是否位于这些值之间。

幸运的是,数据的排列方式让我认为我应该能够使用算术运算符来至少获得潜在匹配行的子集。

时间让我写一些(或者可能是少数几个)uni测试!