2015-12-18 15 views
5

SQLコマンドBETWEENは、列に小さな範囲を指定すると動作します。ここ は、私が何を意味するかです:SQL BETWEENコマンドは大範囲では機能しません

マイコード:

SQLコマンドに対応し
import AzureSQLHandler as sql 

database_layer = sql.AzureSQLHandler() 
RESULTS_TABLE_NAME = "aero2.ResultDataTable" 
where_string = " smog BETWEEN '4' AND '9'" 

print database_layer.select_data(RESULTS_TABLE_NAME, "*", where_string) 

SELECT * 
FROM aero2.ResultDataTable 
BETWEEN '4.0' AND '9.0' 

とselect_dataは、これらすべての行を含む2次元配列を返します。

私がここで参照している欄は、すでに5.0の値をすべて保存しています。

This Works FINE!

しかし、「4.0」と「200.0」の範囲を大きくすると、何も返されません。

答えて

8

データベース内の文字列はアルファベット順に比較されます。文字列'4.0'は、文字が文字2の後に来るため、文字列'200.0'より大きくなります。この種の問合せをサポートする必要がある場合は、データベースで数値型を使用する必要があります。 smog列に数値型(DOUBLEなど)があり、照会にBETWEEN 4.0 AND 200.0を使用していることを確認してください。

スキーマを変更できない場合はCASTcast(smog as DOUBLE) BETWEEN 4.0 and 200.0を使用できますが、このソリューションの方が効率が悪いです。

関連する問題