2009-01-13 49 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測試!