读书人

各位大神,SQL 2005查

发布时间: 2013-10-11 14:52:39 作者: rapoo

各位大神,求救!SQL 2005查
本人在使用一查,各位高手忙解:
例如,我有一表(Test),面只有一字符型nvarchar字段(Ptext),字段值如下:

-AM001
-AM020
-AM030
-ZM200
-ZM300
AM100
AM101
ZM100
ZM200
ZM201
我在需要查范 -AM001 至 -ZM200 的,查句如下:
SELECT * FROM Test WHERE (Ptxt >= '-AM001') AND (Ptxt <= '-ZM200')
但是它示果:(8)
-AM001
-AM020
-AM030
-ZM200
AM100
AM101
ZM100
ZM200
但是正的果是:(4)
-AM001
-AM020
-AM030
-ZM200
什SQL 2005不-的示出了呢?有什法可以查到我想要的正果(4) SQL?2005查
[解决办法]


declare @tab table(ptext varchar(10) collate Chinese_PRC_BIN)
insert into @tab
select '-AM001' union
select '-AM020' union
select '-AM030' union
select '-ZM200' union
select '-ZM300' union
select 'AM100' union
select 'AM101' union
select 'ZM100' union
select 'ZM200' union
select 'ZM201'
select * from @tab where ptext>='-AM001' and ptext<='-ZM200'


这样应该就只有四条了,跟排序规则有关。
[解决办法]
把你的语句改成下面的就可以了哈:


--不用去修改表中字段的排序规则
--而是直接在查询中修改排序规则为 二进制排序,这种方式比较灵活
SELECT * FROM Test
WHERE Ptxt >= '-AM001' collate Chinese_PRC_BIN
AND Ptxt <= '-ZM200' collate Chinese_PRC_BIN

读书人网 >SQL Server

热点推荐