各位大神求救!百思不得其解的SQL 2005查詢問題

gdpenghui 2013-10-09 06:45:35
本人在使用數據庫發現一個查詢問題,請各位高手幫忙解決:
例如,我有一個表(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條記錄)
...全文
91 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ai_li7758521 2013-10-10
  • 打赏
  • 举报
回复
create table #tb(col nvarchar(20))
insert into #tb
select '-AM001'
union all select '-AM020'
union all select '-AM030'
union all select '-ZM200'
union all select '-ZM300'
union all select 'AM100'
union all select 'AM101'
union all select 'ZM100'
union all select 'ZM200'
union all select 'ZM201'
 

 SELECT *
 FROM #tb
 WHERE col between '-AM001' and '-ZM200' collate Chinese_PRC_BIN
Andy__Huang 2013-10-09
  • 打赏
  • 举报
回复

create table #tb(col nvarchar(20))
insert into #tb
select '-AM001'
union all select '-AM020'
union all select '-AM030'
union all select '-ZM200'
union all select '-ZM300'
union all select 'AM100'
union all select 'AM101'
union all select 'ZM100'
union all select 'ZM200'
union all select 'ZM201'


select * from #tb
where col like '-%' and col between '-AM001' and '-ZM200'

/*
-AM001
-AM020
-AM030
-ZM200

*/

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧