You are here: Re: 2000 to 2005 query processng difference? « MsSQL Server « IT news, forums, messages
Re: 2000 to 2005 query processng difference?

Posted by Erland Sommarskog on 03/08/07 22:54

(Luke.Schollmeyer@gmail.com) writes:
> select *
> from
> tableA a
> join
> tableB b ON a.somekey = b.somekey
> where
> a.type = 'A'
> and datediff(yyyy, b.someDateField, getdate()) between
> a.lowboundary and a.highboundary
>
> Some basic facts about the elements and data. The low and high-
> boundary fields are varchar datatypes. In 2005 (regardless of
> compatibility type I run the database under), the query evaluates the
> BETWEEN and errors out due to the fact that it is evaluating the
> DATEDIFF as an integer and finds a non-integer entry in either
> lowboundary or highboundary. I understand and expect this behavior.
> Obviously, changing the result of the DATEDIFF function to varchar
> allows the operation to go forth.
>
> The odd thing is that there is no "a.type = 'A' " entry, thus the
> query wouldn't return anything. In 2000, it seems as though the
> engine is evaluating the type = 'A' and short-circuiting and in 2005,
> it is trying to evaluate the entire query OR is there an implicit
> conversion occuring in 2000 and not in 2005?

To add to Dan's post, there is only one way to control the order of
evaluation, and that is the CASE expression:

AND datediff(uuu, b.someDateField, getdate() BETWEEN
CASE WHEN a.lowboundary NOT LIKE '%[^0-9]%' THEN
a.lowboudnary
END AND
CASE WHEN a.highboundary NOT LIKE '%[^0-9]%' THEN
a.highboudnary
END


--
Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se

Books Online for SQL Server 2005 at
http://www.microsoft.com/technet/prodtechnol/sql/2005/downloads/books.mspx
Books Online for SQL Server 2000 at
http://www.microsoft.com/sql/prodinfo/previousversions/books.mspx

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация