2016-05-30 35 views
1

條件在下面的查詢返回真實的結果,但我想要的結果。請建議我。如何檢查mysql中的前導零的varchar

select * 
from test  
where 
'00160001' between '0013001' and '0023000' OR 
'00200000' between '0013001' and '0023000' 
+0

是什麼阻止您使用實際的數字或轉換值的數字? – Vatev

+0

我假設你真的想測試表中的列對這些值?目前它將返回表中的所有行,或者完全不依賴於您提供的常量,因爲您不測試表中的任何現有列。如果你決定檢查表格中的數據,那麼請向我們展示列定義,以便我們知道它們是字符串還是數字。 –

+0

當你將所有文字定義爲字符串時,所有的比較都是字符串。根據定義,除非提供了一些額外的線索,否則8個字符的字符串不能位於7個字符的字符串之間。 –

回答

0

如果沒有前導零,你會得到相同的結果。
使用整數數據類型來比較整數值。

http://dev.mysql.com/doc/refman/5.7/en/cast-functions.html

你的榜樣與演員:
您也可以使用鑄轉換上飛的值

select if(cast('00160001' as unsigned) between cast('0013001' as unsigned) 
and cast('0023000' as unsigned),1,0) as test_a, 
if(cast('00200000' as unsigned) between cast('0013001' as unsigned) 
and cast('0023000' as unsigned),1,0) as test_b;