2014-06-26 69 views
0

我有這樣的語法sql誰應該選取'stock_ quantity'(Varchar列)列小於'minimum_amount'(Varchar列)的表中的所有記錄,列:sqlite中的varchar字段中的關係運算符的問題

SELECT * FROM fazerem_xius WHERE stock_quantity < MINIMUM_AMOUNT ORDER BY name_products ASC

我的語法有問題,如果列 'stock_quantity' 存儲值10,和列「MINIMUM_AMOUNT的商店值3,此記錄已由th返回e數據庫,爲什麼會發生這種情況,以及如何解決這類問題?

回答

0

比較前將字符串轉換爲數字。例如用數學運算

SELECT * FROM fazerem_xius 
WHERE stock_quantity * 1 < minimum_amount * 1 
ORDER BY name_products ASC 
0

這是因爲字符串值按字母順序進行比較。當您將字符串10與字符串3進行比較時,SQLite首先檢查第一個字符。 13之前的字母表,這就是爲什麼'10' < '3'的結果爲真。

使用CAST()以將它們轉換成數字:

SELECT * FROM fazerem_xius WHERE CAST(stock_quantity AS INTEGER) < CAST(minimum_amount AS INTEGER) ORDER BY name_products ASC