为什么查询的结果有误? ( 积分: 10 )

  • 主题发起人 主题发起人 sjm
  • 开始时间 开始时间
S

sjm

Unregistered / Unconfirmed
GUEST, unregistred user!
SQL Server 2000的一个普通表:tb_ip,其中有两个nverchar字段:startip和endip。现在我用:
SELECT *
FROM tb_ip
where ('221.0.142.94' >= startip) and ('221.0.142.94' <= endip)

查询结果有两条如下:
startip endip
221.0.0.0 221.0.63.255
221.0.130.23 221.0.147.255
显然,只有第二条是对的,第一条是错的。为什么会是这样? 谢谢!
 
SELECT *
FROM tb_ip
where (endip >= '221.0.142.94' ) and (startip <= '221.0.142.94')
 
还是老样子,查到两条!
 
沒錯啊,你的字段是字符型的,肯定是這樣子的,在字符型中'221.0.63.255'肯定大於'221.0.142.94',你想嗎'6'肯定大於'1'啊,如果你想讓'221.0.63.255'<'221.0.142.94'那得做些處理才行,或是提取中間的某段把它轉成數字才能達到你要的結果
 
不能用字符串比较吧
'221.0.63.255' > '221.0.142.94'是成立的
逐个符比较,则第7个字符'6'>'1'
 
多人接受答案了。
 
后退
顶部