try:
1、
select * from member where member_id between 0 and 1000
2、
select * from member where member_id<50000 and member<1000

解决方案 »

  1.   

    select * from member where member_id<50000 and member_id<1000是对的!
      

  2.   

    to:大力为什么要这样写?where member_id<50000 and member_id<1000
      

  3.   

    我也有这样的例子,但约束例是 datetime 类型.也会出现你的哪种况.明明where 条件不在约束中, 可也要搜索每个子表. 
      

  4.   

    是 SQL server 的bug吗?
      

  5.   

    不是bug,是约束吧!sql的语法分析在这方面还是不足,它不能区分 100就是在5000以内!
      

  6.   

    CHECK仅仅在你更新数据记录时起检查作用。你从哪里看到check可以保证数据库中原有的数据是在这个范围内?
      

  7.   

    我怎么从来不知道“凡是有check约束的,表中数据必然满足这个约束”。
      

  8.   

    to: w_rose 
    你去看看分区视图的规格吧!难道不能满足check约束,数据能加入到表中???
      

  9.   

    试:
    CREATE TABLE [dbo].[member_1] (
    [member_id] [int] NOT NULL 
    CHECK ([member_id] >= 1 AND [member_id] <= 50000)

    ALTER TABLE [member_1] ADD PRIMARY KEY ([member_id])CREATE TABLE [dbo].[member_2] (
    [member_id] [int] NOT NULL 
    CHECK (([member_id] >= 50001 AND [member_id] <= 100000) 
    ALTER TABLE [member_2] ADD PRIMARY KEY ([member_id])