<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www2.sqlblog.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>T-SQL Tuesday #002: Is it XML, or Not?!?</title><link>http://www2.sqlblog.com/blogs/adam_machanic/archive/2010/01/12/t-sql-tuesday-002-is-it-xml-or-not.aspx</link><description>The query optimizer is a finicky thing , and sometimes it doesn't understand exactly what you're trying to do until you give it a bit more information. The situation I'm going to describe in this post is one such case. By providing the optimizer with</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>re: T-SQL Tuesday #002: Is it XML, or Not?!?</title><link>http://www2.sqlblog.com/blogs/adam_machanic/archive/2010/01/12/t-sql-tuesday-002-is-it-xml-or-not.aspx#20968</link><pubDate>Tue, 12 Jan 2010 22:55:57 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:20968</guid><dc:creator>Brad Schulz</dc:creator><description>&lt;p&gt;Hi Adam...&lt;/p&gt;
&lt;p&gt;I wrote about this very thing about a month ago and again last week:&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://bradsruminations.blogspot.com/2009/12/delimited-string-tennis-anyone.html"&gt;http://bradsruminations.blogspot.com/2009/12/delimited-string-tennis-anyone.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://bradsruminations.blogspot.com/2010/01/delimited-string-tennis-again-final.html"&gt;http://bradsruminations.blogspot.com/2010/01/delimited-string-tennis-again-final.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In the first link above, I gave an explanation as to WHY the query is so slow.&lt;/p&gt;
&lt;p&gt;I like your FOR XML PATH(''),TYPE approach... it's similar to the .query('.') approach I mentioned in the second link above.&lt;/p&gt;
&lt;p&gt;--Brad&lt;/p&gt;
</description></item><item><title>re: T-SQL Tuesday #002: Is it XML, or Not?!?</title><link>http://www2.sqlblog.com/blogs/adam_machanic/archive/2010/01/12/t-sql-tuesday-002-is-it-xml-or-not.aspx#20974</link><pubDate>Tue, 12 Jan 2010 23:27:33 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:20974</guid><dc:creator>Jonathan Kehayias</dc:creator><description>&lt;p&gt;Very interesting Adam. &amp;nbsp;Thanks for sharing such a critical performance trick as a part of this weeks challenge. &amp;nbsp;I have some code I need to revisit now to see whether this applies.&lt;/p&gt;
</description></item><item><title>re: T-SQL Tuesday #002: Is it XML, or Not?!?</title><link>http://www2.sqlblog.com/blogs/adam_machanic/archive/2010/01/12/t-sql-tuesday-002-is-it-xml-or-not.aspx#20985</link><pubDate>Wed, 13 Jan 2010 03:43:03 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:20985</guid><dc:creator>Rob Farley</dc:creator><description>&lt;p&gt;Gotta love arming the QO with sufficient information, to be able to get proper plans. &lt;/p&gt;
&lt;p&gt;Nice post!&lt;/p&gt;
</description></item><item><title>T-SQL Tuesday #002: The Roundup</title><link>http://www2.sqlblog.com/blogs/adam_machanic/archive/2010/01/12/t-sql-tuesday-002-is-it-xml-or-not.aspx#22008</link><pubDate>Mon, 08 Feb 2010 19:16:10 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:22008</guid><dc:creator>Adam Machanic</dc:creator><description>&lt;p&gt;According to T-SQL Tuesday rules as ratified by me in the first and second T-SQL Tuesday posts, the T-SQL&lt;/p&gt;
</description></item><item><title>T-SQL Tuesday #002: The Roundup</title><link>http://www2.sqlblog.com/blogs/adam_machanic/archive/2010/01/12/t-sql-tuesday-002-is-it-xml-or-not.aspx#22009</link><pubDate>Mon, 08 Feb 2010 19:16:10 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:22009</guid><dc:creator>Adam Machanic</dc:creator><description>&lt;p&gt;According to T-SQL Tuesday rules as ratified by me in the first and second T-SQL Tuesday posts, the T-SQL&lt;/p&gt;
</description></item><item><title>re: T-SQL Tuesday #002: Is it XML, or Not?!?</title><link>http://www2.sqlblog.com/blogs/adam_machanic/archive/2010/01/12/t-sql-tuesday-002-is-it-xml-or-not.aspx#38914</link><pubDate>Thu, 06 Oct 2011 23:53:40 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:38914</guid><dc:creator>Dan</dc:creator><description>&lt;p&gt;I actually have a question, rather, I need help figuring out why the code below runs 300% faster in the dev environment than in the QA env.&lt;/p&gt;
&lt;p&gt;Some one suggested that replace the following construct with the one below, however, the runtime did not change. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;@request.value('(/searchRequest/mlsNumber)[1]'&lt;/p&gt;
&lt;p&gt;--&lt;/p&gt;
&lt;p&gt;@request.value('(/searchRequest/mlsNumber/text())[1]'&lt;/p&gt;
&lt;p&gt;--&lt;/p&gt;
&lt;p&gt;Please help.&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;
&lt;p&gt;Dan&lt;/p&gt;
&lt;p&gt;	DECLARE @request xml&lt;/p&gt;
&lt;p&gt;	DECLARE @latitudeMax float&lt;/p&gt;
&lt;p&gt;	DECLARE @latitudeMin float&lt;/p&gt;
&lt;p&gt;	DECLARE @longitudeMax float&lt;/p&gt;
&lt;p&gt;	DECLARE @longitudeMin float&lt;/p&gt;
&lt;p&gt;	DECLARE @agentUsername varchar(30)&lt;/p&gt;
&lt;p&gt;	DECLARE @firmCode varchar(30)&lt;/p&gt;
&lt;p&gt;	DECLARE @areas table&lt;/p&gt;
&lt;p&gt;	(&lt;/p&gt;
&lt;p&gt;		AreaID int&lt;/p&gt;
&lt;p&gt;		, Name varchar(200)&lt;/p&gt;
&lt;p&gt;	)&lt;/p&gt;
&lt;p&gt;--&lt;/p&gt;
&lt;p&gt;--&lt;/p&gt;
&lt;p&gt;select @Request = '&amp;lt;searchRequest&amp;gt;&amp;lt;header&amp;gt;&amp;lt;requestType&amp;gt;ListingSearch&amp;lt;/requestType&amp;gt;&amp;lt;/header&amp;gt;&amp;lt;zipCode&amp;gt;91342&amp;lt;/zipCode&amp;gt;&amp;lt;propertyType&amp;gt;&amp;lt;type&amp;gt;0&amp;lt;/type&amp;gt;&amp;lt;/propertyType&amp;gt;&amp;lt;listingStatus&amp;gt;&amp;lt;status&amp;gt;5&amp;lt;/status&amp;gt;&amp;lt;/listingStatus&amp;gt;&amp;lt;/searchRequest&amp;gt;'&lt;/p&gt;
&lt;p&gt;--&lt;/p&gt;
&lt;p&gt;--INSERT INTO ListingSearchIndex&lt;/p&gt;
&lt;p&gt;--	(RequestID, SearchKey)&lt;/p&gt;
&lt;p&gt;	SELECT 470	, svo.MlsNum&lt;/p&gt;
&lt;p&gt;	FROM&lt;/p&gt;
&lt;p&gt;		mls_unified_svo_tbl svo (nolock)&lt;/p&gt;
&lt;p&gt;	WHERE &lt;/p&gt;
&lt;p&gt;		svo.LoadOnInternet = 1&lt;/p&gt;
&lt;p&gt;		AND svo.std IS NOT NULL&lt;/p&gt;
&lt;p&gt;		AND svo.snd IS NOT NULL	&lt;/p&gt;
&lt;p&gt;		AND (svo.Status IN (5, 30, 45)&lt;/p&gt;
&lt;p&gt;				OR &lt;/p&gt;
&lt;p&gt;				(svo.Status IN (10, 20)&lt;/p&gt;
&lt;p&gt;					AND DATEDIFF(day, svo.StatusDate, GETDATE()) &amp;lt; 365&lt;/p&gt;
&lt;p&gt;				 )&lt;/p&gt;
&lt;p&gt;			)&lt;/p&gt;
&lt;p&gt;		AND&lt;/p&gt;
&lt;p&gt;			CASE WHEN @request.exist('/searchRequest/mlsNumber') = 0&lt;/p&gt;
&lt;p&gt;				THEN 1&lt;/p&gt;
&lt;p&gt;				ELSE&lt;/p&gt;
&lt;p&gt;					CASE WHEN svo.MlsNum = @request.value('(/searchRequest/mlsNumber)[1]', 'varchar(20)') THEN 1&lt;/p&gt;
&lt;p&gt;					ELSE 0&lt;/p&gt;
&lt;p&gt;					END&lt;/p&gt;
&lt;p&gt;				END = 1&lt;/p&gt;
&lt;p&gt;		AND&lt;/p&gt;
&lt;p&gt;			CASE WHEN @request.exist('/searchRequest/zipCode') = 0&lt;/p&gt;
&lt;p&gt;				THEN 1&lt;/p&gt;
&lt;p&gt;				ELSE&lt;/p&gt;
&lt;p&gt;					CASE WHEN svo.zip = @request.value('(/searchRequest/zipCode)[1]', 'varchar(500)') THEN 1&lt;/p&gt;
&lt;p&gt;					ELSE 0&lt;/p&gt;
&lt;p&gt;					END&lt;/p&gt;
&lt;p&gt;			END = 1&lt;/p&gt;
&lt;p&gt;		AND&lt;/p&gt;
&lt;p&gt;			CASE WHEN @request.exist('/searchRequest/city') = 0&lt;/p&gt;
&lt;p&gt;				THEN 1&lt;/p&gt;
&lt;p&gt;				ELSE&lt;/p&gt;
&lt;p&gt;					CASE WHEN svo.city = @request.value('(/searchRequest/city)[1]', 'varchar(50)') THEN 1&lt;/p&gt;
&lt;p&gt;					ELSE 0&lt;/p&gt;
&lt;p&gt;					END&lt;/p&gt;
&lt;p&gt;				END = 1&lt;/p&gt;
&lt;p&gt;		AND&lt;/p&gt;
&lt;p&gt;			CASE WHEN @request.exist('/searchRequest/address') = 0&lt;/p&gt;
&lt;p&gt;				THEN 1&lt;/p&gt;
&lt;p&gt;				ELSE&lt;/p&gt;
&lt;p&gt;					CASE WHEN SUBSTRING(svo.address, 1, LEN(@request.value('(/searchRequest/address)[1]', 'varchar(100)'))) = @request.value('(/searchRequest/address)[1]', 'varchar(100)') THEN 1&lt;/p&gt;
&lt;p&gt;					ELSE 0&lt;/p&gt;
&lt;p&gt;					END&lt;/p&gt;
&lt;p&gt;				END = 1&lt;/p&gt;
&lt;p&gt;		AND&lt;/p&gt;
&lt;p&gt;			CASE WHEN @request.exist('/searchRequest/listingArea') = 0 &lt;/p&gt;
&lt;p&gt;				THEN 1&lt;/p&gt;
&lt;p&gt;				ELSE&lt;/p&gt;
&lt;p&gt;					CASE WHEN svo.ar IN (SELECT AreaID FROM @areas) OR &amp;nbsp;svo.city IN (SELECT Name FROM @areas) THEN 1&lt;/p&gt;
&lt;p&gt;					ELSE 0&lt;/p&gt;
&lt;p&gt;					END&lt;/p&gt;
&lt;p&gt;				END = 1&lt;/p&gt;
&lt;p&gt;		AND&lt;/p&gt;
&lt;p&gt;			CASE &lt;/p&gt;
&lt;p&gt;				WHEN @latitudeMin IS NULL OR @latitudeMax IS NULL OR @longitudeMin IS NULL OR @longitudeMax IS NULL THEN 1&lt;/p&gt;
&lt;p&gt;				ELSE&lt;/p&gt;
&lt;p&gt;					CASE WHEN svo.Latitude BETWEEN @latitudeMin AND @latitudeMax &lt;/p&gt;
&lt;p&gt;						AND svo.Longitude BETWEEN @longitudeMin AND @longitudeMax THEN 1&lt;/p&gt;
&lt;p&gt;						ELSE 0&lt;/p&gt;
&lt;p&gt;						END&lt;/p&gt;
&lt;p&gt;			END = 1&lt;/p&gt;
&lt;p&gt;		AND&lt;/p&gt;
&lt;p&gt;			CASE WHEN @request.exist('/searchRequest/price/low') = 0&lt;/p&gt;
&lt;p&gt;				THEN 1&lt;/p&gt;
&lt;p&gt;				ELSE&lt;/p&gt;
&lt;p&gt;					CASE WHEN svo.lp &amp;gt;= @request.value('(/searchRequest/price/low)[1]', 'bigint') THEN 1&lt;/p&gt;
&lt;p&gt;					ELSE 0&lt;/p&gt;
&lt;p&gt;					END&lt;/p&gt;
&lt;p&gt;				END = 1&lt;/p&gt;
&lt;p&gt;		AND&lt;/p&gt;
&lt;p&gt;			CASE WHEN @request.exist('/searchRequest/price/high') = 0&lt;/p&gt;
&lt;p&gt;				THEN 1&lt;/p&gt;
&lt;p&gt;				ELSE&lt;/p&gt;
&lt;p&gt;					CASE WHEN svo.lp &amp;lt;= @request.value('(/searchRequest/price/high)[1]', 'bigint') THEN 1&lt;/p&gt;
&lt;p&gt;					ELSE 0&lt;/p&gt;
&lt;p&gt;					END&lt;/p&gt;
&lt;p&gt;				END = 1&lt;/p&gt;
&lt;p&gt;		AND&lt;/p&gt;
&lt;p&gt;			CASE WHEN @request.exist('/searchRequest/yearBuilt/low') = 0&lt;/p&gt;
&lt;p&gt;				THEN 1&lt;/p&gt;
&lt;p&gt;				ELSE&lt;/p&gt;
&lt;p&gt;					CASE WHEN svo.yb &amp;gt;= @request.value('(/searchRequest/yearBuilt/low)[1]', 'smallint') THEN 1&lt;/p&gt;
&lt;p&gt;					ELSE 0&lt;/p&gt;
&lt;p&gt;					END&lt;/p&gt;
&lt;p&gt;				END = 1&lt;/p&gt;
&lt;p&gt;		AND&lt;/p&gt;
&lt;p&gt;			CASE WHEN @request.exist('/searchRequest/yearBuilt/high') = 0&lt;/p&gt;
&lt;p&gt;				THEN 1&lt;/p&gt;
&lt;p&gt;				ELSE&lt;/p&gt;
&lt;p&gt;					CASE WHEN svo.yb &amp;lt;= @request.value('(/searchRequest/yearBuilt/high)[1]', 'smallint') THEN 1&lt;/p&gt;
&lt;p&gt;					ELSE 0&lt;/p&gt;
&lt;p&gt;					END&lt;/p&gt;
&lt;p&gt;				END = 1&lt;/p&gt;
&lt;p&gt;		AND&lt;/p&gt;
&lt;p&gt;			CASE WHEN @request.exist('/searchRequest/sqFootage/low') = 0&lt;/p&gt;
&lt;p&gt;				THEN 1&lt;/p&gt;
&lt;p&gt;				ELSE&lt;/p&gt;
&lt;p&gt;					CASE WHEN svo.sf &amp;gt;= @request.value('(/searchRequest/sqFootage/low)[1]', 'int') THEN 1&lt;/p&gt;
&lt;p&gt;					ELSE 0&lt;/p&gt;
&lt;p&gt;					END&lt;/p&gt;
&lt;p&gt;				END = 1&lt;/p&gt;
&lt;p&gt;		AND&lt;/p&gt;
&lt;p&gt;			CASE WHEN @request.exist('/searchRequest/sqFootage/high') = 0&lt;/p&gt;
&lt;p&gt;				THEN 1&lt;/p&gt;
&lt;p&gt;				ELSE&lt;/p&gt;
&lt;p&gt;					CASE WHEN svo.sf &amp;lt;= @request.value('(/searchRequest/sqFootage/high)[1]', 'int') THEN 1&lt;/p&gt;
&lt;p&gt;					ELSE 0&lt;/p&gt;
&lt;p&gt;					END&lt;/p&gt;
&lt;p&gt;				END = 1&lt;/p&gt;
&lt;p&gt;		AND&lt;/p&gt;
&lt;p&gt;			CASE WHEN @request.exist('/searchRequest/bed/low') = 0&lt;/p&gt;
&lt;p&gt;				THEN 1&lt;/p&gt;
&lt;p&gt;				ELSE&lt;/p&gt;
&lt;p&gt;					CASE WHEN svo.br &amp;gt;= @request.value('(/searchRequest/bed/low)[1]', 'smallint') THEN 1&lt;/p&gt;
&lt;p&gt;					ELSE 0&lt;/p&gt;
&lt;p&gt;					END&lt;/p&gt;
&lt;p&gt;				END = 1&lt;/p&gt;
&lt;p&gt;		AND&lt;/p&gt;
&lt;p&gt;			CASE WHEN @request.exist('/searchRequest/bed/high') = 0&lt;/p&gt;
&lt;p&gt;				THEN 1&lt;/p&gt;
&lt;p&gt;				ELSE&lt;/p&gt;
&lt;p&gt;					CASE WHEN svo.br &amp;lt;= @request.value('(/searchRequest/bed/high)[1]', 'smallint') THEN 1&lt;/p&gt;
&lt;p&gt;					ELSE 0&lt;/p&gt;
&lt;p&gt;					END&lt;/p&gt;
&lt;p&gt;				END = 1				&lt;/p&gt;
&lt;p&gt;		AND&lt;/p&gt;
&lt;p&gt;			CASE WHEN @request.exist('/searchRequest/bath/low') = 0&lt;/p&gt;
&lt;p&gt;				THEN 1&lt;/p&gt;
&lt;p&gt;				ELSE&lt;/p&gt;
&lt;p&gt;					CASE WHEN svo.ba &amp;gt;= @request.value('(/searchRequest/bath/low)[1]', 'decimal') THEN 1&lt;/p&gt;
&lt;p&gt;					ELSE 0&lt;/p&gt;
&lt;p&gt;					END&lt;/p&gt;
&lt;p&gt;				END = 1&lt;/p&gt;
&lt;p&gt;		AND&lt;/p&gt;
&lt;p&gt;			CASE WHEN @request.exist('/searchRequest/bath/high') = 0&lt;/p&gt;
&lt;p&gt;				THEN 1&lt;/p&gt;
&lt;p&gt;				ELSE&lt;/p&gt;
&lt;p&gt;					CASE WHEN svo.ba &amp;lt;= @request.value('(/searchRequest/bath/high)[1]', 'decimal') THEN 1&lt;/p&gt;
&lt;p&gt;					ELSE 0&lt;/p&gt;
&lt;p&gt;					END&lt;/p&gt;
&lt;p&gt;				END = 1				&lt;/p&gt;
&lt;p&gt;		AND&lt;/p&gt;
&lt;p&gt;			CASE WHEN @request.exist('/searchRequest/parking/low') = 0&lt;/p&gt;
&lt;p&gt;				THEN 1&lt;/p&gt;
&lt;p&gt;				ELSE&lt;/p&gt;
&lt;p&gt;					CASE WHEN svo.pkg_num &amp;gt;= @request.value('(/searchRequest/parking/low)[1]', 'int') THEN 1&lt;/p&gt;
&lt;p&gt;					ELSE 0&lt;/p&gt;
&lt;p&gt;					END&lt;/p&gt;
&lt;p&gt;				END = 1&lt;/p&gt;
&lt;p&gt;		AND&lt;/p&gt;
&lt;p&gt;			CASE WHEN @request.exist('/searchRequest/parking/high') = 0&lt;/p&gt;
&lt;p&gt;				THEN 1&lt;/p&gt;
&lt;p&gt;				ELSE&lt;/p&gt;
&lt;p&gt;					CASE WHEN svo.pkg_num &amp;lt;= @request.value('(/searchRequest/parking/high)[1]', 'int') THEN 1&lt;/p&gt;
&lt;p&gt;					ELSE 0&lt;/p&gt;
&lt;p&gt;					END&lt;/p&gt;
&lt;p&gt;				END = 1						&lt;/p&gt;
&lt;p&gt;		AND&lt;/p&gt;
&lt;p&gt;			CASE WHEN @request.exist('/searchRequest/lotSize/low') = 0&lt;/p&gt;
&lt;p&gt;				THEN 1&lt;/p&gt;
&lt;p&gt;				ELSE&lt;/p&gt;
&lt;p&gt;					CASE WHEN svo.lsz &amp;gt;= @request.value('(/searchRequest/lotSize/low)[1]', 'int') THEN 1&lt;/p&gt;
&lt;p&gt;					ELSE 0&lt;/p&gt;
&lt;p&gt;					END&lt;/p&gt;
&lt;p&gt;				END = 1&lt;/p&gt;
&lt;p&gt;		AND&lt;/p&gt;
&lt;p&gt;			CASE WHEN @request.exist('/searchRequest/lotSize/high') = 0&lt;/p&gt;
&lt;p&gt;				THEN 1&lt;/p&gt;
&lt;p&gt;				ELSE&lt;/p&gt;
&lt;p&gt;					CASE WHEN svo.lsz &amp;lt;= @request.value('(/searchRequest/lotSize/high)[1]', 'int') THEN 1&lt;/p&gt;
&lt;p&gt;					ELSE 0&lt;/p&gt;
&lt;p&gt;					END&lt;/p&gt;
&lt;p&gt;				END = 1			&lt;/p&gt;
&lt;p&gt;		AND&lt;/p&gt;
&lt;p&gt;			CASE WHEN @request.exist('/searchRequest/soldPrice/low') = 0&lt;/p&gt;
&lt;p&gt;				THEN 1&lt;/p&gt;
&lt;p&gt;				ELSE&lt;/p&gt;
&lt;p&gt;					CASE WHEN svo.sp &amp;gt;= @request.value('(/searchRequest/soldPrice/low)[1]', 'bigint') THEN 1&lt;/p&gt;
&lt;p&gt;					ELSE 0&lt;/p&gt;
&lt;p&gt;					END&lt;/p&gt;
&lt;p&gt;				END = 1&lt;/p&gt;
&lt;p&gt;		AND&lt;/p&gt;
&lt;p&gt;			CASE WHEN @request.exist('/searchRequest/soldPrice/high') = 0&lt;/p&gt;
&lt;p&gt;				THEN 1&lt;/p&gt;
&lt;p&gt;				ELSE&lt;/p&gt;
&lt;p&gt;					CASE WHEN svo.sp &amp;lt;= @request.value('(/searchRequest/soldPrice/high)[1]', 'bigint') THEN 1&lt;/p&gt;
&lt;p&gt;					ELSE 0&lt;/p&gt;
&lt;p&gt;					END&lt;/p&gt;
&lt;p&gt;				END = 1			&lt;/p&gt;
&lt;p&gt;		AND&lt;/p&gt;
&lt;p&gt;			CASE WHEN @request.exist('/searchRequest/daysInStatus/low') = 0&lt;/p&gt;
&lt;p&gt;				THEN 1&lt;/p&gt;
&lt;p&gt;				ELSE&lt;/p&gt;
&lt;p&gt;					CASE WHEN DATEDIFF(d, svo.statusdate, GETDATE()) &amp;gt;= @request.value('(/searchRequest/daysInStatus/low)[1]', 'int') THEN 1&lt;/p&gt;
&lt;p&gt;					ELSE 0&lt;/p&gt;
&lt;p&gt;					END&lt;/p&gt;
&lt;p&gt;				END = 1&lt;/p&gt;
&lt;p&gt;		AND&lt;/p&gt;
&lt;p&gt;			CASE WHEN @request.exist('/searchRequest/daysInStatus/high') = 0&lt;/p&gt;
&lt;p&gt;				THEN 1&lt;/p&gt;
&lt;p&gt;				ELSE&lt;/p&gt;
&lt;p&gt;					CASE WHEN DATEDIFF(d, svo.statusdate, GETDATE()) &amp;lt;= @request.value('(/searchRequest/daysInStatus/high)[1]', 'int') THEN 1&lt;/p&gt;
&lt;p&gt;					ELSE 0&lt;/p&gt;
&lt;p&gt;					END&lt;/p&gt;
&lt;p&gt;				END = 1							&lt;/p&gt;
&lt;p&gt;		AND&lt;/p&gt;
&lt;p&gt;			CASE WHEN @request.exist('/searchRequest/propertyType') = 0&lt;/p&gt;
&lt;p&gt;				THEN 1&lt;/p&gt;
&lt;p&gt;				ELSE&lt;/p&gt;
&lt;p&gt;					CASE WHEN svo.property_type IN (SELECT Request.PropertyType.value('.', 'int') &lt;/p&gt;
&lt;p&gt;													FROM @request.nodes('/searchRequest/propertyType/type') Request(PropertyType)) THEN 1&lt;/p&gt;
&lt;p&gt;					ELSE 0&lt;/p&gt;
&lt;p&gt;					END&lt;/p&gt;
&lt;p&gt;				END = 1&lt;/p&gt;
&lt;p&gt;		AND &lt;/p&gt;
&lt;p&gt;			CASE &lt;/p&gt;
&lt;p&gt;				WHEN @firmCode IS NULL THEN 1&lt;/p&gt;
&lt;p&gt;				ELSE&lt;/p&gt;
&lt;p&gt;					CASE WHEN @firmCode IN (svo.ListBrokerCode1, svo.ListBrokerCode2, svo.ListBrokerCode3) THEN 1&lt;/p&gt;
&lt;p&gt;					ELSE 0&lt;/p&gt;
&lt;p&gt;					END&lt;/p&gt;
&lt;p&gt;				END = 1&lt;/p&gt;
&lt;p&gt;		AND&lt;/p&gt;
&lt;p&gt;			CASE &lt;/p&gt;
&lt;p&gt;				WHEN @agentUsername IS NULL THEN 1&lt;/p&gt;
&lt;p&gt;				ELSE&lt;/p&gt;
&lt;p&gt;					CASE WHEN @agentUserName IN (svo.ListAgentID1, svo.ListAgentID2, svo.ListAgentID3) THEN 1&lt;/p&gt;
&lt;p&gt;					ELSE 0&lt;/p&gt;
&lt;p&gt;					END&lt;/p&gt;
&lt;p&gt;				END = 1&lt;/p&gt;
&lt;p&gt;		AND ((@request.exist('/searchRequest/listingStatus') = 1&lt;/p&gt;
&lt;p&gt;				AND svo.status IN (SELECT Request.Status.value('.', 'int') FROM @request.nodes('/searchRequest/listingStatus/status') Request(Status))&lt;/p&gt;
&lt;p&gt;				)&lt;/p&gt;
&lt;p&gt;				OR&lt;/p&gt;
&lt;p&gt;				(@request.exist('/searchRequest/listingStatus') = 0&lt;/p&gt;
&lt;p&gt;					AND svo.status NOT IN (40,25,15,35)&lt;/p&gt;
&lt;p&gt;					)&lt;/p&gt;
&lt;p&gt;			)&lt;/p&gt;
&lt;p&gt;		AND (@request.exist('/searchRequest/openhouse') = 0&lt;/p&gt;
&lt;p&gt;				OR EXISTS (SELECT ohl.MlsNum&lt;/p&gt;
&lt;p&gt;							FROM open_house_list ohl (nolock)&lt;/p&gt;
&lt;p&gt;							WHERE &lt;/p&gt;
&lt;p&gt;								ohl.MlsNum = svo.MlsNum&lt;/p&gt;
&lt;p&gt;							AND&lt;/p&gt;
&lt;p&gt;								ohl.public_yn = 'yes'&lt;/p&gt;
&lt;p&gt;							AND&lt;/p&gt;
&lt;p&gt;								ohl.openhouse_type IN ('new', 'review')&lt;/p&gt;
&lt;p&gt;							AND (@request.exist('/searchRequest/openhouse/low') = 0&lt;/p&gt;
&lt;p&gt;									OR ohl.openhouse_date &amp;gt;= @request.value('(/searchRequest/openhouse/low)[1]', 'datetime')&lt;/p&gt;
&lt;p&gt;								)&lt;/p&gt;
&lt;p&gt;							AND (@request.exist('/searchRequest/openhouse/high') = 0&lt;/p&gt;
&lt;p&gt;									OR ohl.openhouse_date &amp;lt;= @request.value('(/searchRequest/openhouse/high)[1]', 'datetime')&lt;/p&gt;
&lt;p&gt;								)								&lt;/p&gt;
&lt;p&gt;				)&lt;/p&gt;
&lt;p&gt;			)&lt;/p&gt;
&lt;p&gt;		AND (@request.exist('/searchRequest/saleType') = 0&lt;/p&gt;
&lt;p&gt;			OR EXISTS (SELECT lst.MlsNum&lt;/p&gt;
&lt;p&gt;						FROM ListingSaleType lst (nolock)&lt;/p&gt;
&lt;p&gt;						WHERE&lt;/p&gt;
&lt;p&gt;							lst.MlsNum = svo.MlsNum&lt;/p&gt;
&lt;p&gt;						AND&lt;/p&gt;
&lt;p&gt;							(@request.exist('/searchRequest/saleType/auction') = 0&lt;/p&gt;
&lt;p&gt;								OR lst.IsAuction = 1&lt;/p&gt;
&lt;p&gt;								)&lt;/p&gt;
&lt;p&gt;						AND&lt;/p&gt;
&lt;p&gt;							(@request.exist('/searchRequest/saleType/foreclosure') = 0&lt;/p&gt;
&lt;p&gt;								OR lst.IsForeclosure = 1&lt;/p&gt;
&lt;p&gt;								)&lt;/p&gt;
&lt;p&gt;						AND&lt;/p&gt;
&lt;p&gt;							(@request.exist('/searchRequest/saleType/default') = 0&lt;/p&gt;
&lt;p&gt;								OR lst.IsDefault = 1&lt;/p&gt;
&lt;p&gt;								)&lt;/p&gt;
&lt;p&gt;						AND&lt;/p&gt;
&lt;p&gt;							(@request.exist('/searchRequest/saleType/reo') = 0&lt;/p&gt;
&lt;p&gt;								OR lst.IsREO = 1&lt;/p&gt;
&lt;p&gt;								)&lt;/p&gt;
&lt;p&gt;						AND&lt;/p&gt;
&lt;p&gt;							(@request.exist('/searchRequest/saleType/short') = 0&lt;/p&gt;
&lt;p&gt;								OR lst.IsShortPay = 1&lt;/p&gt;
&lt;p&gt;								)&lt;/p&gt;
&lt;p&gt;						AND&lt;/p&gt;
&lt;p&gt;							(@request.exist('/searchRequest/saleType/standard') = 0&lt;/p&gt;
&lt;p&gt;								OR lst.IsStandard = 1&lt;/p&gt;
&lt;p&gt;								)&lt;/p&gt;
&lt;p&gt;						AND&lt;/p&gt;
&lt;p&gt;							(@request.exist('/searchRequest/saleType/probate') = 0&lt;/p&gt;
&lt;p&gt;								OR lst.IsProbate = 1&lt;/p&gt;
&lt;p&gt;								)		&lt;/p&gt;
&lt;p&gt;				)&lt;/p&gt;
&lt;p&gt;			)&lt;/p&gt;
</description></item><item><title>re: T-SQL Tuesday #002: Is it XML, or Not?!?</title><link>http://www2.sqlblog.com/blogs/adam_machanic/archive/2010/01/12/t-sql-tuesday-002-is-it-xml-or-not.aspx#38916</link><pubDate>Fri, 07 Oct 2011 00:37:48 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:38916</guid><dc:creator>Adam Machanic</dc:creator><description>&lt;p&gt;Hi Dan,&lt;/p&gt;
&lt;p&gt;Sorry, but I can't debug something like that remotely. If you'd like e-mail me using the &amp;quot;Email&amp;quot; link on the upper righthand corner of the page and we'll set up a consulting arrangement so that I can get into your server and check things out.&lt;/p&gt;
&lt;p&gt;--Adam&lt;/p&gt;
</description></item><item><title>re: T-SQL Tuesday #002: Is it XML, or Not?!?</title><link>http://www2.sqlblog.com/blogs/adam_machanic/archive/2010/01/12/t-sql-tuesday-002-is-it-xml-or-not.aspx#38962</link><pubDate>Mon, 10 Oct 2011 16:26:45 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:38962</guid><dc:creator>dan</dc:creator><description>&lt;p&gt;Hi, Adam&lt;/p&gt;
&lt;p&gt;Sorry, I just saw your reply. Thank you for responding.&lt;/p&gt;
&lt;p&gt;It turned out that the problem was environment specific, i.e., the two DBs, DEV Vs QA were different in size, etc.&lt;/p&gt;
&lt;p&gt;Thank you much!&lt;/p&gt;
&lt;p&gt;Dan&lt;/p&gt;
</description></item></channel></rss>