索引对查询条件顺序的影响的

电热设备2021年09月06日

环境:Sql Server2000 +sp4

问题:

select datediff(day,\'\',\'\') --这句可以执行

--而下面这句不能执行(有时也可以执行)

--sub_para为varchar(8),错误信息是:从字符串转换为 datetime 时发生语法错误。

select * from T_SUB

where item_local_code=\'03004\'

and datediff(day,sub_para,getdate())=29

and (sub_del_flag1)

--而且不能执行的时候,这个语句不会返回任何记录集

select * from t_sub

where item_local_code=\'03004\'

and isDate(sub_para)=0

-------------------------------------------------------------------------

--原因,表中创建的索引影响了条件的执行顺序

--导致先执行了 datediff(day,sub_para,getdate())

--下面的测试说明了这个问题

--测试表及数据

create table tb(

item_local_code char(5),

sub_del_flag int,

sub_para varchar(10),

constraint PK_t primary key(sub_para,item_local_code)

)

insert tb select \'03004\',1,\'\'

union all select \'03005\',1,\'2003a\'

go

--查询语句

select * from (

select * from tb

where item_local_code=\'03004\'

and sub_del_flag0

and isdate(sub_para)=1

) A where datediff(day,sub_para,getdate())29

go

--删除测试

drop table tb

/*--测试结果

item_local_code sub_del_flag sub_para

--------------- ------------ ----------

03004 1

服务器: 消息 241,级别 16,状态 1,行 3

从字符串转换为 datetime 时发生语法错误。

如果按照一人一墓设计殡葬 --*/

徐州看白癜风要花多少钱
武汉专治白癜风医院
头上有斑秃怎么治疗
相关阅读
公职考试也看“家庭背景”,这3类人很有优势,考上机会很大!

公详的垄断压力却是是一年比一年大,每年省详、国详都是几十上百万人报上...

2023-11-29
九龙建业拟8.17亿港元购并能杰发展

  乐居财经昨 赵微5月末20日,九龙建业(00034)公告,收购能杰工业发展有限...

2023-11-06
男子伪造才可倒卖物资被上海警方查处

疫情防控任时,一铁饼竟持假冒两车身份证件偷窃社会生活物资,任由疫情防...

2023-10-23
外地产豆奶外包装呈阳性、部分流入早餐店:镇江急寻接触者

外出生产的豆奶、午餐奶送到苏州后被查出外包装一新冠大肠杆菌呈特征性,...

2023-10-14
宁德时代的未来,要看康普顿蔚小理的脸色?

龙岩一时期,迎来了一个夏天。 作为一新能盛动力高压能总量消耗“大型号...

2023-10-10
谢霆锋现身台自曝曾与王晶关系不好,提到王菲时他一脸娇羞

5月8日,郑中基到台省为自家国际品牌做政治宣传。通宵之中走型男路线的他...

2023-10-06
友情链接