<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1661902421469144975</id><updated>2012-02-09T06:52:28.784-08:00</updated><title type='text'>SQL SERVER</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>91</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-3658486507864538474</id><published>2008-11-11T21:52:00.000-08:00</published><updated>2008-11-11T21:54:33.133-08:00</updated><title type='text'>How To search entire database?</title><content type='html'>While browsing the SQL Server newsgroups, every once in a while, I see a request for a script that can search all the columns of all the tables in a given database for a specific keyword. I never took such posts seriously. But then recently, one of my network administrators was troubleshooting a problem with Microsoft Operations Manager (MOM). MOM uses SQL Server for storing all the computer, alert and performance related information. He narrowed the problem down to something specific, and needed a script that can search all the MOM tables for a specific string. I had no such script handy at that time, so we ended up searching manually.&lt;br /&gt;&lt;br /&gt;That's when I really felt the need for such a script and came up with this stored procedure "SearchAllTables". It accepts a search string as input parameter, goes and searches all char, varchar, nchar, nvarchar columns of all tables (only user created tables. System tables are excluded), owned by all users in the current database. Feel free to extend this procedure to search other datatypes.&lt;br /&gt;&lt;br /&gt;check out these link&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://vyaskn.tripod.com/search_all_columns_in_all_tables.htm"&gt;http://vyaskn.tripod.com/search_all_columns_in_all_tables.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://it.toolbox.com/wiki/index.php/Get_Records_from_ANY_table_in_a_Database_Matching_Specified_Value"&gt;http://it.toolbox.com/wiki/index.php/Get_Records_from_ANY_table_in_a_Database_Matching_Specified_Value&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-3658486507864538474?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/3658486507864538474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=3658486507864538474' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/3658486507864538474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/3658486507864538474'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/11/how-to-search-entire-database.html' title='How To search entire database?'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-5728768633155902726</id><published>2008-08-03T21:33:00.000-07:00</published><updated>2008-08-03T21:34:22.747-07:00</updated><title type='text'>With the inclusion of .NET within SQL Server 2005, many people thought that T-SQL would become semi-redundant, and no further updates would be applied</title><content type='html'>With the inclusion of .NET within SQL Server 2005, many people thought that T-SQL would become semi-redundant, and no further updates would be applied. The functionality that was missing could perhaps be completed through the use of .NET. However, T-SQL code is still the heart and lungs of SQL Server. Set-based processing, in which SQL Server can build query plans, is by far the best option for many queries. With SQL Server 2005, T-SQL has gained some functionality that was previously missing, making it a good choice over its competitors. T-SQL has expanded its horizons with capabilities for pivoting data and ranking rows of data based on ranking criteria, as well as other new functionality required to work with the new XML data type. In this article, you'll see how each of these enhancements works.&lt;a href="http://microsoft.apress.com/feature/68/introduction-to-sql-server-2005-part-2-t-sql"&gt;for complete article check out this link&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-5728768633155902726?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/5728768633155902726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=5728768633155902726' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/5728768633155902726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/5728768633155902726'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/08/with-inclusion-of-net-within-sql-server.html' title='With the inclusion of .NET within SQL Server 2005, many people thought that T-SQL would become semi-redundant, and no further updates would be applied'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-6839370312046885132</id><published>2008-07-21T05:46:00.001-07:00</published><updated>2008-07-21T05:46:36.886-07:00</updated><title type='text'>Turning Tables into Delimited Text</title><content type='html'>The world isn’t relational. It’s not divided into rows and columns. Sometimes&lt;br /&gt;when there’s a list associated with a row, it’s better to show the list&lt;br /&gt;as comma-separated text rather than try to preserve a relational presentation.&lt;br /&gt;I use this technique on reports and sometimes on online grids. The&lt;br /&gt;UDFs that implement this technique are not multistatement but scalar.&lt;br /&gt;CREATE FUNCTION udf_Titles_AuthorList (&lt;br /&gt;@title_id char(6) -- title ID from pubs database&lt;br /&gt;) RETURNS varchar(255) -- List of authors&lt;br /&gt;-- No SCHEMABINDING reads data from another DB&lt;br /&gt;/*&lt;br /&gt;* Returns a comma-separated list of the last name of all&lt;br /&gt;* authors for a title.&lt;br /&gt;*&lt;br /&gt;* Example:&lt;br /&gt;Select Title, dbo.udf_Titles_AuthorList(title_id) as [Authors]&lt;br /&gt;FROM pubs..titles ORDER by Title&lt;br /&gt;****************************************************************/&lt;br /&gt;AS BEGIN&lt;br /&gt;DECLARE @lname varchar(40) -- one last name.&lt;br /&gt;, @sList varchar(255) -- working list&lt;br /&gt;SET @sList = ''&lt;br /&gt;DECLARE BookAuthors CURSOR FAST_FORWARD FOR&lt;br /&gt;SELECT au_lname&lt;br /&gt;FROM pubs..Authors A&lt;br /&gt;INNER JOIN pubs..titleAuthor ta&lt;br /&gt;ON A.au_id = ta.au_id&lt;br /&gt;WHERE ta.title_ID = @Title_ID&lt;br /&gt;ORDER BY au_lname&lt;br /&gt;OPEN BookAuthors&lt;br /&gt;FETCH BookAuthors INTO @lname&lt;br /&gt;WHILE @@Fetch_status = 0 BEGIN&lt;br /&gt;SET @sList = CASE WHEN LEN(@sList) &gt; 0&lt;br /&gt;THEN @sList + ', ' + @lname&lt;br /&gt;ELSE @lname&lt;br /&gt;END&lt;br /&gt;FETCH BookAuthors INTO @lname&lt;br /&gt;END&lt;br /&gt;CLOSE BookAuthors&lt;br /&gt;DEALLOCATE BookAuthors&lt;br /&gt;RETURN @sList&lt;br /&gt;END&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-6839370312046885132?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/6839370312046885132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=6839370312046885132' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/6839370312046885132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/6839370312046885132'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/07/turning-tables-into-delimited-text.html' title='Turning Tables into Delimited Text'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-6796029788003958059</id><published>2008-07-17T01:44:00.000-07:00</published><updated>2008-07-17T01:45:39.500-07:00</updated><title type='text'>CAST and CONVERT (T-SQL)</title><content type='html'>How to use cast and convert check out this &lt;a href="http://doc.ddart.net/mssql/sql70/ca-co_1.htm"&gt;link&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-6796029788003958059?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/6796029788003958059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=6796029788003958059' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/6796029788003958059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/6796029788003958059'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/07/cast-and-convert-t-sql.html' title='CAST and CONVERT (T-SQL)'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-6187374258553835461</id><published>2008-07-17T00:09:00.001-07:00</published><updated>2008-07-17T00:09:45.317-07:00</updated><title type='text'>Renaming a Stored Procedure</title><content type='html'>&lt;h1&gt;&lt;br /&gt;&lt;/h1&gt;&lt;dl class="Entity_SyntaxList"&gt;&lt;dt class="Entity_SyntaxTerm"&gt;          Syntax:        &lt;/dt&gt;&lt;dd class="Entity_SyntaxDescripton"&gt;    sp_rename 'procedure_name1', 'procedure_name2'   &lt;/dd&gt;&lt;dt class="Entity_SyntaxTerm"&gt;procedure_name1&lt;/dt&gt;&lt;dd class="Entity_SyntaxDescripton"&gt;The current name of the stored procedure&lt;/dd&gt;&lt;dt class="Entity_SyntaxTerm"&gt;procedure_name2&lt;/dt&gt;&lt;dd class="Entity_SyntaxDescripton"&gt;The new name of the stored procedure.&lt;/dd&gt;&lt;/dl&gt;&lt;p class="Entity_BriefDescription"&gt;    A stored procedure can be renamed. The new name should follow the rules for identifiers.   &lt;/p&gt;&lt;p class="Entity_DetailDescription"&gt; &lt;/p&gt;&lt;h2&gt;Examples&lt;/h2&gt;&lt;div class="Entity_CodeExample"&gt;&lt;h5&gt;Code:&lt;/h5&gt;&lt;code class="CodeSample"&gt;     EXEC sp_rename 'spGetAvgGrade', 'spNewAvgGrade';    &lt;/code&gt;&lt;h5&gt;Output:&lt;/h5&gt;&lt;code class="CodeOutput"&gt;     Caution: Changing any part of an object name could break scripts and stored procedures.&lt;br /&gt;    The object was renamed to 'spNewAvgGrade'.    &lt;/code&gt;&lt;h5&gt;Explanation:&lt;/h5&gt;&lt;p class="Explanation"&gt;     In the above example we change the name of the stored procedure spGetAvgGrade to spNewAvgGrade.    &lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-6187374258553835461?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/6187374258553835461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=6187374258553835461' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/6187374258553835461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/6187374258553835461'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/07/renaming-stored-procedure.html' title='Renaming a Stored Procedure'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-595011200362794103</id><published>2008-07-15T23:03:00.001-07:00</published><updated>2008-07-15T23:03:38.128-07:00</updated><title type='text'>Implementing Custom Paging in ASP.NET with SQL Server 2005</title><content type='html'>&lt;p&gt;Why Custom Paging?&lt;br /&gt;Custom paging allows you to get limited number records from a large database table that saves processing time of your database server as well as your application server and makes your application scalable, efficient and fast.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;In this article, I am going to explain how to create a stored procedure in SQL Server 2005 that allows you to pass startRowIndex and pageSize as a parameter and return you the number of records starting from that row index to the page size specified. It was possible in the SQL Server 2000 too but it was not as easy as in SQL Server 2005 is.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;&lt;span style="font-size:85%;color:#008000;"&gt;&lt;p&gt;-- EXEC LoadPagedArticles 10, 5&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;CREATE&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="font-size:85%;"&gt; LoadPagedArticles &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#008000;"&gt;-- Add the parameters for the stored procedure here&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;@startRowIndex &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;int&lt;/span&gt;&lt;span style="font-size:85%;color:#808080;"&gt;,&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;@pageSize &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;int&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;AS&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;BEGIN&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#008000;"&gt;-- SET NOCOUNT ON added to prevent extra result sets from&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#008000;"&gt;-- interfering with SELECT statements.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;SET&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;NOCOUNT&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;ON&lt;/span&gt;&lt;span style="font-size:85%;color:#808080;"&gt;;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#808080;"&gt;&lt;span style="font-size:85%;color:#008000;"&gt;-- increase the startRowIndex by 1 to avoid returning the last record again&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;SET&lt;/span&gt;&lt;span style="font-size:85%;"&gt; @startRowIndex &lt;/span&gt;&lt;span style="font-size:85%;color:#808080;"&gt;=&lt;/span&gt;&lt;span style="font-size:85%;"&gt; @startRowIndex &lt;/span&gt;&lt;span style="font-size:85%;color:#808080;"&gt;+&lt;/span&gt;&lt;span style="font-size:85%;"&gt; 1 &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt; BEGIN&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;       SELECT&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#808080;"&gt;*&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;FROM&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#808080;"&gt;(&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;                Select&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#808080;"&gt;*,&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#ff00ff;"&gt;                ROW_NUMBER&lt;/span&gt;&lt;span style="font-size:85%;color:#808080;"&gt;()&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;OVER&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#808080;"&gt;(&lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;ORDER&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;BY&lt;/span&gt;&lt;span style="font-size:85%;"&gt; AutoID &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;ASC&lt;/span&gt;&lt;span style="font-size:85%;color:#808080;"&gt;)&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;as&lt;/span&gt;&lt;span style="font-size:85%;"&gt; RowNum&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;                FROM&lt;/span&gt;&lt;span style="font-size:85%;"&gt; Articles &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#808080;"&gt;              )&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;as&lt;/span&gt;&lt;span style="font-size:85%;"&gt; ArticleList&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;       WHERE&lt;/span&gt;&lt;span style="font-size:85%;"&gt; RowNum &lt;/span&gt;&lt;span style="font-size:85%;color:#808080;"&gt;BETWEEN&lt;/span&gt;&lt;span style="font-size:85%;"&gt; @startRowIndex &lt;/span&gt;&lt;span style="font-size:85%;color:#808080;"&gt;AND&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#808080;"&gt;(&lt;/span&gt;&lt;span style="font-size:85%;"&gt;@startRowIndex &lt;/span&gt;&lt;span style="font-size:85%;color:#808080;"&gt;+&lt;/span&gt;&lt;span style="font-size:85%;"&gt; @pageSize&lt;/span&gt;&lt;span style="font-size:85%;color:#808080;"&gt;)&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#808080;"&gt;-&lt;/span&gt;&lt;span style="font-size:85%;"&gt; 1&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;       ORDER&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;BY&lt;/span&gt;&lt;span style="font-size:85%;"&gt; AutoID &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;ASC&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;  END&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;END&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;p&gt;GO&lt;/p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-595011200362794103?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/595011200362794103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=595011200362794103' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/595011200362794103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/595011200362794103'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/07/implementing-custom-paging-in-aspnet.html' title='Implementing Custom Paging in ASP.NET with SQL Server 2005'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-7534649878814299418</id><published>2008-07-08T00:24:00.000-07:00</published><updated>2008-07-08T00:26:29.529-07:00</updated><title type='text'>Execute Dynamic SQL commands in SQL Server</title><content type='html'>&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt; font-size: small;&lt;br /&gt; color: black;&lt;br /&gt; font-family: Consolas, "Courier New", Courier, Monospace;&lt;br /&gt; background-color: #ffffff;&lt;br /&gt; /*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt; background-color: #f4f4f4;&lt;br /&gt; width: 100%;&lt;br /&gt; margin: 0em;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;br /&gt;&lt;/style&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;In&lt;/span&gt; &lt;span class="kwrd"&gt;some&lt;/span&gt; applications &lt;span class="kwrd"&gt;having&lt;/span&gt; hard coded &lt;span class="kwrd"&gt;SQL&lt;/span&gt; statements &lt;span class="kwrd"&gt;is&lt;/span&gt; &lt;span class="kwrd"&gt;not&lt;/span&gt; appealing,&lt;br /&gt;because &lt;span class="kwrd"&gt;of&lt;/span&gt; the &lt;span class="kwrd"&gt;dynamic&lt;/span&gt; nature &lt;span class="kwrd"&gt;of&lt;/span&gt; the queries being issued against the&lt;br /&gt;&lt;span class="kwrd"&gt;database&lt;/span&gt; server. Because &lt;span class="kwrd"&gt;of&lt;/span&gt; this sometimes there &lt;span class="kwrd"&gt;is&lt;/span&gt; a need &lt;span class="kwrd"&gt;to&lt;/span&gt; dynamically &lt;span class="kwrd"&gt;&lt;br /&gt;create&lt;/span&gt; a &lt;span class="kwrd"&gt;SQL&lt;/span&gt; &lt;span class="kwrd"&gt;statement&lt;/span&gt; &lt;span class="kwrd"&gt;on&lt;/span&gt; the fly &lt;span class="kwrd"&gt;and&lt;/span&gt; &lt;span class="kwrd"&gt;then&lt;/span&gt; run that command.  This can be&lt;br /&gt;done quite simply &lt;span class="kwrd"&gt;from&lt;/span&gt; the application perspective &lt;span class="kwrd"&gt;where&lt;/span&gt; the &lt;span class="kwrd"&gt;statement&lt;/span&gt; &lt;span class="kwrd"&gt;is&lt;/span&gt;&lt;br /&gt;built &lt;span class="kwrd"&gt;on&lt;/span&gt; the fly whether you &lt;span class="kwrd"&gt;are&lt;/span&gt; &lt;span class="kwrd"&gt;using&lt;/span&gt; ASP.NET, ColdFusion &lt;span class="kwrd"&gt;or&lt;/span&gt; &lt;span class="kwrd"&gt;any&lt;/span&gt; other programming &lt;span class="kwrd"&gt;&lt;br /&gt;language&lt;/span&gt;.  But how do you do this &lt;span class="kwrd"&gt;from&lt;/span&gt; within a &lt;span class="kwrd"&gt;SQL&lt;/span&gt; Server stored &lt;span class="kwrd"&gt;procedure&lt;/span&gt;?&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;SQL&lt;/span&gt; Server offers a few ways &lt;span class="kwrd"&gt;of&lt;/span&gt; running a dynamically built &lt;span class="kwrd"&gt;SQL&lt;/span&gt; &lt;span class="kwrd"&gt;statement&lt;/span&gt;. &lt;br /&gt;These ways &lt;span class="kwrd"&gt;are&lt;/span&gt;:&lt;br /&gt;1.    Writing a query &lt;span class="kwrd"&gt;with&lt;/span&gt; &lt;span class="kwrd"&gt;parameters&lt;/span&gt;&lt;br /&gt;2.    &lt;span class="kwrd"&gt;Using&lt;/span&gt; &lt;span class="kwrd"&gt;EXEC&lt;/span&gt;&lt;br /&gt;3.    &lt;span class="kwrd"&gt;Using&lt;/span&gt; sp_executesql&lt;br /&gt;Writing a query &lt;span class="kwrd"&gt;with&lt;/span&gt; &lt;span class="kwrd"&gt;parameters&lt;/span&gt;&lt;br /&gt;This &lt;span class="kwrd"&gt;first&lt;/span&gt; approach &lt;span class="kwrd"&gt;is&lt;/span&gt; pretty straight forward &lt;span class="kwrd"&gt;if&lt;/span&gt; you &lt;span class="kwrd"&gt;only&lt;/span&gt; need &lt;span class="kwrd"&gt;to&lt;/span&gt; pass &lt;span class="kwrd"&gt;parameters&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;br /&gt;into&lt;/span&gt; your &lt;span class="kwrd"&gt;WHERE&lt;/span&gt; clause &lt;span class="kwrd"&gt;of&lt;/span&gt; your &lt;span class="kwrd"&gt;SQL&lt;/span&gt; &lt;span class="kwrd"&gt;statement&lt;/span&gt;.  Let&lt;span class="str"&gt;'s say we need to find all records&lt;br /&gt; from the customers table where City = '&lt;/span&gt;London&lt;span class="str"&gt;'.  This can be done easily such as&lt;br /&gt;the following example shows.&lt;br /&gt;DECLARE @city varchar(75)&lt;br /&gt;SET @city = '&lt;/span&gt;London&lt;span class="str"&gt;'&lt;br /&gt;SELECT * FROM customers WHERE City = @city&lt;br /&gt;2. Using EXEC&lt;br /&gt;With this approach you are building the SQL statement on the fly and can pretty&lt;br /&gt; much do whatever you need to in order to construct the statement.  Let'&lt;/span&gt;s say we&lt;br /&gt;want &lt;span class="kwrd"&gt;to&lt;/span&gt; be able &lt;span class="kwrd"&gt;to&lt;/span&gt; pass &lt;span class="kwrd"&gt;in&lt;/span&gt; the &lt;span class="kwrd"&gt;column&lt;/span&gt; list along &lt;span class="kwrd"&gt;with&lt;/span&gt; the city.&lt;br /&gt;&lt;span class="kwrd"&gt;For&lt;/span&gt; this example we want &lt;span class="kwrd"&gt;to&lt;/span&gt; &lt;span class="kwrd"&gt;get&lt;/span&gt; columns CustomerID, ContactName &lt;span class="kwrd"&gt;and&lt;/span&gt; City &lt;span class="kwrd"&gt;where&lt;/span&gt;&lt;br /&gt; City = &lt;span class="str"&gt;'London'&lt;/span&gt;.&lt;br /&gt;&lt;span class="kwrd"&gt;As&lt;/span&gt; you can see &lt;span class="kwrd"&gt;from&lt;/span&gt; this example handling the @city &lt;span class="kwrd"&gt;value&lt;/span&gt; &lt;span class="kwrd"&gt;is&lt;/span&gt; &lt;span class="kwrd"&gt;not&lt;/span&gt; &lt;span class="kwrd"&gt;at&lt;/span&gt; straight&lt;br /&gt; forward, because you also need &lt;span class="kwrd"&gt;to&lt;/span&gt; define the extra quotes &lt;span class="kwrd"&gt;in&lt;/span&gt; &lt;span class="kwrd"&gt;order&lt;/span&gt; &lt;span class="kwrd"&gt;to&lt;/span&gt; pass a&lt;br /&gt;&lt;span class="kwrd"&gt;character&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt; &lt;span class="kwrd"&gt;into&lt;/span&gt; the query.  These extra quotes could also be done within the &lt;span class="kwrd"&gt;&lt;br /&gt;statement&lt;/span&gt;, but either way you need &lt;span class="kwrd"&gt;to&lt;/span&gt; specify the extra single quotes &lt;span class="kwrd"&gt;in&lt;/span&gt; &lt;span class="kwrd"&gt;order&lt;/span&gt; &lt;span class="kwrd"&gt;for&lt;/span&gt;&lt;br /&gt;the query &lt;span class="kwrd"&gt;to&lt;/span&gt; be built correctly &lt;span class="kwrd"&gt;and&lt;/span&gt; therefore run.&lt;br /&gt;&lt;span class="kwrd"&gt;DECLARE&lt;/span&gt; @sqlCommand &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(1000)&lt;br /&gt;&lt;span class="kwrd"&gt;DECLARE&lt;/span&gt; @columnList &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(75)&lt;br /&gt;&lt;span class="kwrd"&gt;DECLARE&lt;/span&gt; @city &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(75)&lt;br /&gt;&lt;span class="kwrd"&gt;SET&lt;/span&gt; @columnList = &lt;span class="str"&gt;'CustomerID, ContactName, City'&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;SET&lt;/span&gt; @city = &lt;span class="str"&gt;''&lt;/span&gt;&lt;span class="str"&gt;'London'&lt;/span&gt;&lt;span class="str"&gt;''&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;SET&lt;/span&gt; @sqlCommand = &lt;span class="str"&gt;'SELECT '&lt;/span&gt; + @columnList + &lt;span class="str"&gt;' FROM customers WHERE City = '&lt;/span&gt; + @city&lt;br /&gt;&lt;span class="kwrd"&gt;EXEC&lt;/span&gt; (@sqlCommand)&lt;br /&gt;3. sp_exectesql&lt;br /&gt;&lt;span class="kwrd"&gt;With&lt;/span&gt; this approach you have the ability &lt;span class="kwrd"&gt;to&lt;/span&gt; still dynamically build the query,&lt;br /&gt;but you &lt;span class="kwrd"&gt;are&lt;/span&gt; also able &lt;span class="kwrd"&gt;to&lt;/span&gt; still &lt;span class="kwrd"&gt;use&lt;/span&gt; &lt;span class="kwrd"&gt;parameters&lt;/span&gt; &lt;span class="kwrd"&gt;as&lt;/span&gt; you could &lt;span class="kwrd"&gt;in&lt;/span&gt; example 1.&lt;br /&gt;This saves the need &lt;span class="kwrd"&gt;to&lt;/span&gt; have &lt;span class="kwrd"&gt;to&lt;/span&gt; deal &lt;span class="kwrd"&gt;with&lt;/span&gt; the extra quotes &lt;span class="kwrd"&gt;to&lt;/span&gt; &lt;span class="kwrd"&gt;get&lt;/span&gt; the query &lt;span class="kwrd"&gt;to&lt;/span&gt;&lt;br /&gt;build correctly.  &lt;span class="kwrd"&gt;In&lt;/span&gt; addition, &lt;span class="kwrd"&gt;with&lt;/span&gt; &lt;span class="kwrd"&gt;using&lt;/span&gt; this approach you can ensure that the&lt;br /&gt;&lt;span class="kwrd"&gt;data&lt;/span&gt; &lt;span class="kwrd"&gt;values&lt;/span&gt; being passed &lt;span class="kwrd"&gt;into&lt;/span&gt; the query &lt;span class="kwrd"&gt;are&lt;/span&gt; the correct datatypes.&lt;br /&gt;&lt;span class="kwrd"&gt;DECLARE&lt;/span&gt; @sqlCommand nvarchar(1000)&lt;br /&gt;&lt;span class="kwrd"&gt;DECLARE&lt;/span&gt; @columnList &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(75)&lt;br /&gt;&lt;span class="kwrd"&gt;DECLARE&lt;/span&gt; @city &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(75)&lt;br /&gt;&lt;span class="kwrd"&gt;SET&lt;/span&gt; @columnList = &lt;span class="str"&gt;'CustomerID, ContactName, City'&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;SET&lt;/span&gt; @city = &lt;span class="str"&gt;'London'&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;SET&lt;/span&gt; @sqlCommand = &lt;span class="str"&gt;'SELECT '&lt;/span&gt; + @columnList + &lt;span class="str"&gt;' FROM customers WHERE City = @city'&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;EXECUTE&lt;/span&gt; sp_executesql @sqlCommand, N&lt;span class="str"&gt;'@city nvarchar(75)'&lt;/span&gt;, @city = @city&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-7534649878814299418?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/7534649878814299418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=7534649878814299418' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/7534649878814299418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/7534649878814299418'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/07/execute-dynamic-sql-commands-in-sql.html' title='Execute Dynamic SQL commands in SQL Server'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-1937678305059862945</id><published>2008-07-08T00:12:00.000-07:00</published><updated>2008-07-08T00:14:51.522-07:00</updated><title type='text'>Tips and Trics About Case</title><content type='html'>suppose We need a stored procedure that can be called by an application but the user wants to be able sort by either first name or last name. One would be tempted to use dynamic SQL to solve this problem, but we can use CASE to create a dynamic SQL equivalent&lt;br /&gt;CREATE PROCEDURE dbo.getCustomerData @sortby VARCHAR(9), @sortdirection CHAR(4)&lt;br /&gt;AS&lt;br /&gt;SET nocount ON&lt;br /&gt;&lt;br /&gt;SELECT customerid, firstname, lastname, statecode, statedescription, totalsales&lt;br /&gt;FROM dbo.Customer&lt;br /&gt;ORDER BY &lt;br /&gt;CASE @sortdirection&lt;br /&gt;     WHEN 'asc' THEN&lt;br /&gt;      CASE @sortby &lt;br /&gt;       WHEN 'firstname' THEN firstname &lt;br /&gt;       WHEN 'lastname' THEN lastname &lt;br /&gt;       END&lt;br /&gt;END &lt;br /&gt;ASC,&lt;br /&gt;CASE @sortdirection&lt;br /&gt;      WHEN 'desc' THEN&lt;br /&gt;       CASE @sortby &lt;br /&gt;       WHEN 'firstname' THEN firstname &lt;br /&gt;       WHEN 'lastname' THEN lastname &lt;br /&gt;       END&lt;br /&gt;END&lt;br /&gt;DESC&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;EXEC dbo.getCustomerData 'lastname', 'desc'&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A final requirement has crossed our desk. We need to modify the stored procedure to search customers by a specific state. If the state is omitted, we should return customers for all states.&lt;br /&gt;ALTER PROCEDURE dbo.getCustomerData @sortby VARCHAR(9), @sortdirection CHAR(4), @statecode VARCHAR(2) = NULL&lt;br /&gt;AS&lt;br /&gt;SET nocount ON&lt;br /&gt;&lt;br /&gt;SELECT customerid, firstname, lastname, statecode, statedescription, totalsales&lt;br /&gt;FROM dbo.Customer&lt;br /&gt;WHERE statecode = CASE WHEN @statecode IS NOT NULL THEN @statecode &lt;br /&gt;ELSE statecode&lt;br /&gt;END&lt;br /&gt;ORDER BY &lt;br /&gt;CASE @sortdirection&lt;br /&gt;     WHEN 'asc' THEN&lt;br /&gt;      CASE @sortby &lt;br /&gt;       WHEN 'firstname' THEN firstname &lt;br /&gt;       WHEN 'lastname' THEN lastname &lt;br /&gt;       END&lt;br /&gt;END &lt;br /&gt;ASC,&lt;br /&gt;CASE @sortdirection&lt;br /&gt;      WHEN 'desc' THEN&lt;br /&gt;       CASE @sortby &lt;br /&gt;       WHEN 'firstname' THEN firstname &lt;br /&gt;       WHEN 'lastname' THEN lastname &lt;br /&gt;       END&lt;br /&gt;END&lt;br /&gt;DESC&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;EXEC dbo.getCustomerData 'lastname', 'desc', 'MA'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-1937678305059862945?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/1937678305059862945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=1937678305059862945' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/1937678305059862945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/1937678305059862945'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/07/tips-and-trics-about-case.html' title='Tips and Trics About Case'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-2121731913989159092</id><published>2008-07-07T22:42:00.000-07:00</published><updated>2008-07-07T22:44:29.098-07:00</updated><title type='text'>Using Coalesce to Pivot</title><content type='html'>Using Coalesce to Pivot&lt;br /&gt;If you run the following statement against the AdventureWorks database&lt;br /&gt;SELECT Name&lt;br /&gt;FROM HumanResources.Department&lt;br /&gt;WHERE (GroupName = 'Executive General and Administration')&lt;br /&gt;&lt;br /&gt;you will come up with a standard result &lt;br /&gt;&lt;br /&gt;If you want to pivot the data you could run the following command.&lt;br /&gt;DECLARE @DepartmentName VARCHAR(1000)&lt;br /&gt;&lt;br /&gt;SELECT @DepartmentName = COALESCE(@DepartmentName,'') + Name + ',' &lt;br /&gt;FROM HumanResources.Department&lt;br /&gt;WHERE (GroupName = 'Executive General and Administration')&lt;br /&gt;&lt;br /&gt;SELECT @DepartmentName AS DepartmentNames&lt;br /&gt;&lt;br /&gt;and get the result set with comma separated in a single column.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-2121731913989159092?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/2121731913989159092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=2121731913989159092' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/2121731913989159092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/2121731913989159092'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/07/using-coalesce-to-pivot.html' title='Using Coalesce to Pivot'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-1969120820294861968</id><published>2008-07-07T22:19:00.000-07:00</published><updated>2008-07-07T22:20:26.699-07:00</updated><title type='text'>SQL Server Function to Determine a Leap Year</title><content type='html'>The following scalar function takes in a year and returns a bit flag indicating whether the passed in year is a leap year or not.&lt;br /&gt;&lt;br /&gt;create function dbo.fn_IsLeapYear (@year int)&lt;br /&gt;returns bit&lt;br /&gt;as&lt;br /&gt;begin&lt;br /&gt;    return(select case datepart(mm, dateadd(dd, 1, cast((cast(@year as varchar(4)) + '0228') as datetime)))&lt;br /&gt;    when 2 then 1&lt;br /&gt;    else 0&lt;br /&gt;    end)&lt;br /&gt;end&lt;br /&gt;go&lt;br /&gt;&lt;br /&gt;That's all there is to it! The function takes in the year, appends '0228' to it (for February 28th) and adds a day. If the month of the next day is a 2 (as extracted by the DATEPART function), then we're still in February so it must be a leap year!  If not, it is not a leap year.&lt;br /&gt;Here are a few examples:&lt;br /&gt;&lt;br /&gt;select dbo.fn_IsLeapYear(1900) as 'IsLeapYear?'&lt;br /&gt;select dbo.fn_IsLeapYear(2000) as 'IsLeapYear?'&lt;br /&gt;select dbo.fn_IsLeapYear(2007) as 'IsLeapYear?'&lt;br /&gt;select dbo.fn_IsLeapYear(2008) as 'IsLeapYear?'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-1969120820294861968?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/1969120820294861968/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=1969120820294861968' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/1969120820294861968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/1969120820294861968'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/07/sql-server-function-to-determine-leap.html' title='SQL Server Function to Determine a Leap Year'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-76892142894334556</id><published>2008-05-15T22:43:00.000-07:00</published><updated>2008-05-15T22:47:40.071-07:00</updated><title type='text'>Comma</title><content type='html'>Raw Data:&lt;br /&gt;&lt;br /&gt;id      name      services&lt;br /&gt;-----------------------------------&lt;br /&gt;1      Joe      AA&lt;br /&gt;1      Joe      AB&lt;br /&gt;1      Joe      AC&lt;br /&gt;2      Judy      GH&lt;br /&gt;2      Judy      GC&lt;br /&gt;3      Kevin      AA&lt;br /&gt;3      Kevin      GH&lt;br /&gt;&lt;br /&gt;Result Set:&lt;br /&gt;&lt;br /&gt;id      name      services&lt;br /&gt;-----------------------------------&lt;br /&gt;1      Joe      AA, AB, AC&lt;br /&gt;2      Judy      GH, GC&lt;br /&gt;3      Kevin      AA, GH&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you have MSSQL2K,  then the most performant (and arguably most elegant) way woud be to use a &lt;b style="color: black; background-color: rgb(153, 255, 153);"&gt;user&lt;/b&gt;-&lt;b style="color: black; background-color: rgb(255, 153, 153);"&gt;defined&lt;/b&gt; &lt;b style="color: black; background-color: rgb(255, 102, 255);"&gt;function&lt;/b&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Your data:&lt;br /&gt;&lt;br /&gt;create table t1(id int,     name varchar(10),     services varchar(10))         &lt;br /&gt;                                                                                &lt;br /&gt;insert into t1 values(1,'Joe'  ,'AA')                                           &lt;br /&gt;insert into t1 values(1,'Joe'  ,'AB')                                           &lt;br /&gt;insert into t1 values(1,'Joe'  ,'AC')                                           &lt;br /&gt;insert into t1 values(2,'Judy' ,'GH')                                           &lt;br /&gt;insert into t1 values(2,'Judy' ,'GC')                                           &lt;br /&gt;insert into t1 values(3,'Kevin','AA')                                           &lt;br /&gt;insert into t1 values(3,'Kevin','GH')     &lt;br /&gt;&lt;br /&gt; .. the &lt;b style="color: black; background-color: rgb(255, 102, 255);"&gt;function&lt;/b&gt;:&lt;br /&gt;&lt;br /&gt;create &lt;b style="color: black; background-color: rgb(255, 102, 255);"&gt;function&lt;/b&gt; my_comma_sep ( @id int) returns varchar(4000) as&lt;br /&gt;begin                                                                       &lt;br /&gt;  declare @result varchar(4000)                                                  &lt;br /&gt;  set @result = ''                                                               &lt;br /&gt;  select @result = @result                                                       &lt;br /&gt;               + case when len(@result)&gt;0 then ',' else '' end                 &lt;br /&gt;               + services                                                      &lt;br /&gt;    from t1                                                                    &lt;br /&gt;    where id = @id                                                             &lt;br /&gt;  return @result                                                                 &lt;br /&gt;end                                                                            &lt;br /&gt;          &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now you can use the &lt;b style="color: black; background-color: rgb(255, 102, 255);"&gt;function&lt;/b&gt; like this:&lt;br /&gt;&lt;br /&gt;select id,name, dbo.my_comma_sep(id)                                                                               &lt;br /&gt;from (select distinct id,name from t1) x&lt;br /&gt;&lt;br /&gt;..or like this:&lt;br /&gt;&lt;br /&gt;select id, max(name), dbo.my_comma_sep(id)&lt;br /&gt;from t1 group by id&lt;br /&gt;&lt;br /&gt;... or like this:&lt;br /&gt;&lt;br /&gt;select id, name, dbo.my_comma_sep(id)&lt;br /&gt;from t1 group by id,name&lt;br /&gt;&lt;br /&gt;... and the result:&lt;br /&gt;&lt;br /&gt;1      Joe      AA,AB,AC&lt;br /&gt;2      Judy      GH,GC&lt;br /&gt;3      Kevin      AA,GH&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-76892142894334556?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/76892142894334556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=76892142894334556' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/76892142894334556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/76892142894334556'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/05/comma.html' title='Comma'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-1839665447255827524</id><published>2008-05-13T05:20:00.000-07:00</published><updated>2008-05-13T05:21:03.268-07:00</updated><title type='text'>Comma Seprated Input</title><content type='html'>=======================&lt;br /&gt;CREATE &lt;b style="color: black; background-color: rgb(255, 102, 255);"&gt;PROCEDURE&lt;/b&gt; dbo.sp1&lt;br /&gt;@list as varchar(200)&lt;br /&gt; AS&lt;br /&gt;&lt;br /&gt;exec ( 'SELECT field1, field2, field3 FROM Table1 WHERE UPPER(RIGHT(RTRIM(field1),3)) IN ( ' + @list + ' ) ' )&lt;br /&gt;=========================&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;and you need to call this proc as below&lt;br /&gt;&lt;br /&gt;exec sp1 @list = '''DFG'',''ABC'',''ASD'',''FGH'''&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-1839665447255827524?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/1839665447255827524/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=1839665447255827524' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/1839665447255827524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/1839665447255827524'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/05/comma-seprated-input.html' title='Comma Seprated Input'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-623617386197208397</id><published>2008-04-23T07:57:00.001-07:00</published><updated>2008-04-23T07:57:58.125-07:00</updated><title type='text'>Easy SQL “If Record Exists, Update It. If Not, Insert It.”</title><content type='html'>&lt;pre style="padding: 2px; overflow: scroll; background-color: rgb(204, 204, 204);"&gt;CREATE PROCEDURE dbo.spAddUserName&lt;br /&gt;     (&lt;br /&gt;     @UserID AS int,&lt;br /&gt;     @FirstName AS varchar(50),&lt;br /&gt;     @LastName AS varchar(50)&lt;br /&gt;     )&lt;br /&gt;AS&lt;br /&gt;     BEGIN&lt;br /&gt;          DECLARE @rc int   &lt;br /&gt;&lt;br /&gt;         UPDATE [Users]&lt;br /&gt;            SET FirstName = @FirstName, LastName = @LastName&lt;br /&gt;           WHERE UserID = @UserID  &lt;br /&gt;&lt;br /&gt;         /* how many rows were affected? */&lt;br /&gt;         SELECT @rc = @@ROWCOUNT   &lt;br /&gt;&lt;br /&gt;          IF @rc = 0&lt;br /&gt;               BEGIN&lt;br /&gt;                    INSERT INTO [Users]&lt;br /&gt;                               (FirstName, LastName)&lt;br /&gt;                         VALUES (@FirstName, LastName)&lt;br /&gt;              END        &lt;br /&gt;&lt;br /&gt;     END&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-623617386197208397?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/623617386197208397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=623617386197208397' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/623617386197208397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/623617386197208397'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/04/easy-sql-if-record-exists-update-it-if.html' title='Easy SQL “If Record Exists, Update It. If Not, Insert It.”'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-4476033704093436584</id><published>2008-04-22T16:46:00.000-07:00</published><updated>2008-04-22T16:47:07.264-07:00</updated><title type='text'>What is Best Way TO Count Number Of Rows</title><content type='html'>select rows from sysindexes&lt;br /&gt;where id = OBJECT_ID(@table_name) and&lt;br /&gt;indid &lt; 2&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-4476033704093436584?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/4476033704093436584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=4476033704093436584' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/4476033704093436584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/4476033704093436584'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/04/what-is-best-way-to-count-number-of.html' title='What is Best Way TO Count Number Of Rows'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-8143286209199180608</id><published>2008-04-22T11:42:00.000-07:00</published><updated>2008-04-22T11:45:49.684-07:00</updated><title type='text'></title><content type='html'>&lt;pre class="sql"&gt;dbcc checkident &lt;span class="br0"&gt;(&lt;/span&gt;TableName, reseed, &lt;span class="nu0"&gt;0&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-8143286209199180608?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/8143286209199180608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=8143286209199180608' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/8143286209199180608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/8143286209199180608'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/04/dbcc-checkident-tablename-reseed-0.html' title=''/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-4754318894919200906</id><published>2008-04-16T09:06:00.000-07:00</published><updated>2008-04-16T09:09:35.999-07:00</updated><title type='text'>Row To Column</title><content type='html'>Suppose you have a table structure like&lt;br /&gt;&lt;br /&gt;create table tmpStocks&lt;br /&gt;(&lt;br /&gt;[StockSymbol] [char] (8),&lt;br /&gt;[ExchMM] [varchar] (10)&lt;br /&gt;)&lt;br /&gt;go&lt;br /&gt;create table tmpExchanges&lt;br /&gt;(&lt;br /&gt;[Name] [char] (10),&lt;br /&gt;[ExchSymbo] [char] (1)&lt;br /&gt;)&lt;br /&gt;go&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. Insert some values:&lt;br /&gt;&lt;br /&gt;insert into tmpStocks (stocksymbol,exchmm) values ('KS','IP')&lt;br /&gt;insert into tmpStocks (stocksymbol,exchmm) values ('PK6','IB')&lt;br /&gt;insert into tmpStocks (stocksymbol,exchmm) values ('LHJ','I')&lt;br /&gt;insert into tmpStocks (stocksymbol,exchmm) values ('JHL','P')&lt;br /&gt;insert into tmpExchanges (name,ExchSymbo) values ('ISE','I')&lt;br /&gt;insert into tmpExchanges (name,ExchSymbo) values ('BOX','B')&lt;br /&gt;insert into tmpExchanges (name,ExchSymbo) values ('PCost','P')&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;and you want result like&lt;br /&gt;&lt;br /&gt;how to get the results as following:&lt;br /&gt;&lt;br /&gt;[StockSymbol] [ExchMM] [ISE] [BOX] [PCost]&lt;br /&gt;ks                                        IP                    1            0                  1&lt;br /&gt;PK6                                   IB                    1             1                  0&lt;br /&gt;LHJ                                   I                       1              0                 0&lt;br /&gt;JHL                                   P                      0             0                  1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Solution1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;select s.stocksymbol, s.exchmm,&lt;br /&gt;ise = sum( case e.exchsymbo when 'I' then 1 else 0 end ),&lt;br /&gt;box = sum( case e.exchsymbo when 'B' then 1 else 0 end ),&lt;br /&gt;pcost = sum( case e.exchsymbo when 'P' then 1 else 0 end )&lt;br /&gt;from tmpStocks s&lt;br /&gt;left outer join tmpExchanges e&lt;br /&gt;on charindex( e.exchsymbo, s.exchmm ) &gt; 0&lt;br /&gt;group by s.stocksymbol, s.exchmm&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Solution2&lt;br /&gt;&lt;br /&gt;declare @tname char(10), @tsym char(1)&lt;br /&gt;declare @selectSQL varchar(1000)&lt;br /&gt;&lt;br /&gt;select @selectSQL = ''&lt;br /&gt;&lt;br /&gt;declare cur cursor for&lt;br /&gt;select distinct [name], exchsymbo&lt;br /&gt;from tmpExchanges&lt;br /&gt;order by [name]&lt;br /&gt;&lt;br /&gt;open cur&lt;br /&gt;fetch cur into @tname, @tsym&lt;br /&gt;&lt;br /&gt;while @@fetch_status = 0&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt;select @selectSQL = @selectSQL + ', ' + rtrim(@tname) + '= sum( case e.exchsymbo when ''' + @tsym + ''' then 1 else 0 end ) '&lt;br /&gt;fetch next from cur into @tname, @tsym&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;select @selectSQL = 'select s.stocksymbol, s.exchmm ' + @selectSQL + ' from tmpStocks s '&lt;br /&gt;+ 'left outer join tmpExchanges e '&lt;br /&gt;+ 'on charindex( e.exchsymbo, s.exchmm ) &gt; 0 '&lt;br /&gt;+ 'group by s.stocksymbol, s.exchmm '&lt;br /&gt;&lt;br /&gt;exec(@selectSQL)&lt;br /&gt;&lt;br /&gt;close cur&lt;br /&gt;deallocate cur&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-4754318894919200906?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/4754318894919200906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=4754318894919200906' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/4754318894919200906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/4754318894919200906'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/04/row-to-column.html' title='Row To Column'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-3444293048728618917</id><published>2008-04-16T08:02:00.000-07:00</published><updated>2008-04-16T08:04:55.515-07:00</updated><title type='text'>Covert Row To Column In SQL Server 2005</title><content type='html'>&lt;span id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;&lt;p align="left"&gt;Let us suppose that you have a table like below&lt;br /&gt;&lt;/p&gt; &lt;p align="left"&gt; &lt;/p&gt; &lt;p align="left"&gt;&lt;span style="font-family:Courier;"&gt;&lt;u&gt;col1&lt;/u&gt;    | &lt;u&gt;col2&lt;/u&gt;    | &lt;u&gt;col3&lt;/u&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="left"&gt;&lt;span style="font-family:Courier;"&gt;--------*---------*----------&lt;/span&gt;&lt;/p&gt; &lt;p align="left"&gt;&lt;span style="font-family:Courier;"&gt;Value 1 | Value 2 | Value 3&lt;/span&gt;&lt;/p&gt; &lt;p align="left"&gt; &lt;/p&gt; &lt;p align="left"&gt;&lt;span style="font-family:Courier;"&gt;And change it to one that looks like this:&lt;/span&gt;&lt;/p&gt; &lt;p align="left"&gt; &lt;/p&gt; &lt;p align="left"&gt;&lt;span style="font-family:Courier;"&gt;&lt;u&gt;Name&lt;/u&gt; | &lt;u&gt;Value&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:Courier;"&gt; &lt;/span&gt;&lt;p align="left"&gt;&lt;span style="font-family:Courier;"&gt;&lt;span style="font-family:Courier;"&gt;-----*---------&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="left"&gt;&lt;span style="font-family:Courier;"&gt;&lt;span style="font-family:Courier;"&gt;col1 | Value 1&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="left"&gt;&lt;span style="font-family:Courier;"&gt;&lt;span style="font-family:Courier;"&gt;-----*---------&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="left"&gt;&lt;span style="font-family:Courier;"&gt;&lt;span style="font-family:Courier;"&gt;col2 | Value 2&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="left"&gt;&lt;span style="font-family:Courier;"&gt;&lt;span style="font-family:Courier;"&gt;-----*---------&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="left"&gt;&lt;span style="font-family:Courier;"&gt;&lt;span style="font-family:Courier;"&gt;col3 | Value 3&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family:Courier;"&gt;&lt;span style="font-family:Courier;"&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;DECLARE&lt;/span&gt; @&lt;span class="kwrd"&gt;Table&lt;/span&gt; &lt;span class="kwrd"&gt;Table&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(col1 &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(10),&lt;br /&gt;&lt;br /&gt;col2 &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(10),&lt;br /&gt;&lt;br /&gt;col3 &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(10))&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;INSERT&lt;/span&gt; &lt;span class="kwrd"&gt;INTO&lt;/span&gt; @&lt;span class="kwrd"&gt;TABLE&lt;/span&gt; &lt;span class="kwrd"&gt;VALUES&lt;/span&gt; (&lt;span class="str"&gt;'Value 1'&lt;/span&gt;, &lt;span class="str"&gt;'Value 2'&lt;/span&gt;, &lt;span class="str"&gt;'Value 3'&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;INSERT&lt;/span&gt; &lt;span class="kwrd"&gt;INTO&lt;/span&gt; @&lt;span class="kwrd"&gt;TABLE&lt;/span&gt; &lt;span class="kwrd"&gt;VALUES&lt;/span&gt; (&lt;span class="str"&gt;'Value 4'&lt;/span&gt;, &lt;span class="str"&gt;'Value 5'&lt;/span&gt;, &lt;span class="str"&gt;'Value 6'&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;INSERT&lt;/span&gt; &lt;span class="kwrd"&gt;INTO&lt;/span&gt; @&lt;span class="kwrd"&gt;TABLE&lt;/span&gt; &lt;span class="kwrd"&gt;VALUES&lt;/span&gt; (&lt;span class="str"&gt;'Value 7'&lt;/span&gt;, &lt;span class="str"&gt;'Value 8'&lt;/span&gt;, &lt;span class="str"&gt;'Value 9'&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; col, colval&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;FROM&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; col1, col2, col3&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;FROM&lt;/span&gt; @&lt;span class="kwrd"&gt;TABLE&lt;/span&gt;) p&lt;br /&gt;&lt;br /&gt;UNPIVOT&lt;br /&gt;&lt;br /&gt;(ColVal &lt;span class="kwrd"&gt;FOR&lt;/span&gt; Col &lt;span class="kwrd"&gt;IN&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(col1, col2, col3)&lt;br /&gt;&lt;br /&gt;)&lt;span class="kwrd"&gt;AS&lt;/span&gt; unpvt&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-3444293048728618917?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/3444293048728618917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=3444293048728618917' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/3444293048728618917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/3444293048728618917'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/04/covert-row-to-column-in-sql-server-2005.html' title='Covert Row To Column In SQL Server 2005'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-5686282786727994976</id><published>2008-04-15T11:37:00.000-07:00</published><updated>2008-04-15T11:38:59.369-07:00</updated><title type='text'>Sorting IP Addresses</title><content type='html'>IP addresses are represented in dotted decimal notation i.e. four numbers, each ranging from 0 to 255 and separated by dots. Each range from 0 to 255 can be represented by 8 bits and is thus called an octet. Some first octet values like 127 have special meaning - 127 represents the local computer. Octets 0 and 255 are not acceptable values in some situations. 0 can however be used as the second and third octet. &lt;p&gt;So, as you can imagine that unless we are storing the data in a sortable friendly way, sorting of this data would require some string manipulation. Let’s follow this up with an example:&lt;/p&gt; &lt;p&gt;CREATE TABLE IP_ADDR (COL1 NVARCHAR(30));&lt;br /&gt;INSERT INTO IP_ADDR VALUES ( ‘30.33.33.30′ );&lt;br /&gt;INSERT INTO IP_ADDR VALUES ( ‘256.10.1.2′ );&lt;br /&gt;INSERT INTO IP_ADDR VALUES ( ‘256.255.10.2′ );&lt;br /&gt;INSERT INTO IP_ADDR VALUES ( ‘127.0.0.1′ );&lt;br /&gt;INSERT INTO IP_ADDR VALUES ( ‘132.22.33.44′ );&lt;br /&gt;INSERT INTO IP_ADDR VALUES ( ‘132.10.30.1′ );&lt;br /&gt;INSERT INTO IP_ADDR VALUES ( ‘132.1.1.132′ );&lt;br /&gt;INSERT INTO IP_ADDR VALUES ( ‘10.20.30.10′ );&lt;br /&gt;Now, if we order by COL1, then we will get:&lt;/p&gt; &lt;p&gt;SELECT * FROM IP_ADDR ORDER BY COL1;&lt;/p&gt; &lt;p&gt;COL1&lt;br /&gt;——————————&lt;br /&gt;10.20.30.10&lt;br /&gt;127.0.0.1&lt;br /&gt;132.1.1.132&lt;br /&gt;132.10.30.1&lt;br /&gt;132.22.33.44&lt;br /&gt;256.10.1.2&lt;br /&gt;256.255.10.2&lt;br /&gt;30.33.33.30&lt;/p&gt; &lt;p&gt;As you can see from above, 30.33.33.30 comes last though we should expect it after 10.20.30.10. And likewise, in some other cases as well. Now, if we use the SUBSTRING (SQL Server) - SUBSTR in Oracle function and make use of the &lt;a href="http://decipherinfosys.wordpress.com/2007/10/08/charindex-function-in-sql-server/"&gt;CHARINDEX &lt;/a&gt;(SQL Server) or &lt;a href="http://decipherinfosys.wordpress.com/2007/07/30/instr-function/"&gt;INSTR&lt;/a&gt; (Oracle) or &lt;a href="http://decipherinfosys.wordpress.com/2007/10/08/locate-function-in-db2-luw/"&gt;LOCATE&lt;/a&gt; (DB2 LUW), we can easily do these manipulations. Let us take SQL Server as an example - the same methodology would apply to Oracle and DB2 as well but do keep in mind the differences between CHARINDEX(), INSTR() and LOCATE() - we had discussed these before in some of our blog posts.&lt;/p&gt; &lt;pre&gt;SELECT&lt;br /&gt;SUBSTRING(COL1, 1, CHARINDEX('.', COL1) - 1) AS FIRST_OCTET,&lt;br /&gt;CAST(SUBSTRING(COL1, CHARINDEX('.', COL1)+1, CHARINDEX('.', SUBSTRING(COL1, CHARINDEX('.', COL1)+1, LEN(COL1))) - 1) AS INT) AS SECOND_OCTET,&lt;br /&gt;*&lt;br /&gt;    FROM IP_ADDR&lt;br /&gt;        ORDER BY&lt;br /&gt;            CAST(SUBSTRING(COL1, 1, CHARINDEX('.', COL1) - 1) AS INT),&lt;br /&gt;            CAST(SUBSTRING(COL1, CHARINDEX('.', COL1)+1, CHARINDEX('.', SUBSTRING(COL1, CHARINDEX('.', COL1)+1, LEN(COL1))) - 1) AS INT)&lt;/pre&gt; &lt;p&gt;The SQL above is used to show how to use the CHARINDEX() and the SUBSTRING() function to separate out the first and the second octets…you can do the same with the third and the fourth one as well and then order by on those in the same order i.e. the first_octet first (after converting it to an integer), then the second_octet and so on.  Here are the results from the execution from above:&lt;/p&gt; &lt;pre&gt;FIRST_OCTET                    SECOND_OCTET COL1&lt;br /&gt;------------------------------ ------------ ------------------------------&lt;br /&gt;10                             20           10.20.30.10&lt;br /&gt;30                             33           30.33.33.30&lt;br /&gt;127                            0            127.0.0.1&lt;br /&gt;132                            1            132.1.1.132&lt;br /&gt;132                            10           132.10.30.1&lt;br /&gt;132                            22           132.22.33.44&lt;br /&gt;256                            10           256.10.1.2&lt;br /&gt;256                            255          256.255.10.2&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-5686282786727994976?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/5686282786727994976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=5686282786727994976' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/5686282786727994976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/5686282786727994976'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/04/sorting-ip-addresses.html' title='Sorting IP Addresses'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-7992628087037124022</id><published>2008-04-15T11:33:00.000-07:00</published><updated>2008-04-15T11:35:36.778-07:00</updated><title type='text'>How To Sort DateField(where datafield is stored as varchar)</title><content type='html'>9101,,3/28/2008,~/images/PlusSign.gif,~/images/PlusSign.gif,~/images/PlusSign.gif,~/images/PlusSign.gif,1,400 9102,,3/7/2008,~/images/PlusSign.gif,~/images/PlusSign.gif,~/images/PlusSign.gif,~/images/PlusSign.gif,1,400&lt;br /&gt;9103,~/images/PlusSign.gif,~/images/PlusSign.gif,~/images/PlusSign.gif,~/images/PlusSign.gif,~/images/PlusSign.gif&lt;br /&gt;set ANSI_NULLS ON&lt;br /&gt;set QUOTED_IDENTIFIER ON&lt;br /&gt;go&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ALTER proc [dbo].[usp_getsevent]&lt;br /&gt;&lt;br /&gt;@userid int&lt;br /&gt;&lt;br /&gt;as&lt;br /&gt;    create table #tempdat (scheduleeventid int, eventdate varchar(100),opponents varchar(100),locationname varchar(100),eventtime varchar(100),officials varchar(100))&lt;br /&gt;    create table #tempdat1 (scheduleeventid int, eventdate varchar(100),opponents varchar(100),locationname varchar(100),eventtime varchar(100),officials varchar(100))&lt;br /&gt;    create table #tempdat2 (scheduleeventid int, eventdate varchar(100),opponents varchar(100),locationname varchar (100),eventtime varchar(100),officials varchar(100))&lt;br /&gt;    declare @scheduleeventid int, @eventdate varchar(100),@opponents varchar(100),@locationname varchar(100),@eventtime varchar(100),@officials varchar(100),@INDEX varchar(10),@tdate varchar(100),@tempdate varchar(100),@tempdate1 varchar(100),@tempdate2 varchar(100)&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;    DECLARE date_Cursor CURSOR FOR&lt;br /&gt;        SELECT  scheduleEventid,eventdate,opponents,locationname,eventtime,officials FROM scheduledevent where eventdate NOT like '%~%' AND userid = @userid&lt;br /&gt;&lt;br /&gt;     OPEN date_Cursor&lt;br /&gt;&lt;br /&gt;        FETCH NEXT FROM date_Cursor&lt;br /&gt;        INTO @scheduleeventid,@eventdate,@opponents,@locationname,@eventtime,@officials&lt;br /&gt;&lt;br /&gt;        WHILE @@FETCH_STATUS = 0&lt;br /&gt;        BEGIN&lt;br /&gt;            SET @INDEX = CHARINDEX('-', @eventdate)&lt;br /&gt;            IF @INDEX &gt;0&lt;br /&gt;                BEGIN&lt;br /&gt;                    SET @tempdate = RIGHT(@eventdate, LEN(@tdate)-@INDEX)&lt;br /&gt;                    insert into #tempdat (scheduleeventid,eventdate,opponents,locationname,eventtime,officials) values (@scheduleeventid,@eventdate,@opponents,@locationname,@eventtime,@officials)&lt;br /&gt;                END&lt;br /&gt;            ELSE&lt;br /&gt;                BEGIN&lt;br /&gt;                    insert into #tempdat (scheduleeventid,eventdate,opponents,locationname,eventtime,officials) values (@scheduleeventid,@eventdate,@opponents,@locationname,@eventtime,@officials)&lt;br /&gt;                END&lt;br /&gt;           &lt;br /&gt;&lt;br /&gt;            FETCH NEXT FROM date_Cursor&lt;br /&gt;            INTO @scheduleeventid,@eventdate,@opponents,@locationname,@eventtime,@officials&lt;br /&gt;        END&lt;br /&gt;&lt;br /&gt;        CLOSE date_Cursor&lt;br /&gt;        DEALLOCATE date_Cursor&lt;br /&gt;&lt;br /&gt;        insert into #tempdat1  select * from #tempdat order by  cast(convert(varchar(10),eventdate,101)AS datetime) desc&lt;br /&gt;       &lt;br /&gt;        insert into #tempdat2 SELECT  scheduleEventid,eventdate,opponents,locationname,eventtime,officials    FROM scheduledevent where eventdate like '%~%' And userid = @userid&lt;br /&gt;&lt;br /&gt;        insert into #tempdat1 SELECT * FROM #tempdat2   &lt;br /&gt;&lt;br /&gt;        SELECT * from  #tempdat1&lt;br /&gt;       &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;drop table #tempdat&lt;br /&gt;drop table #tempdat1&lt;br /&gt;drop table #tempdat2&lt;br /&gt;&lt;br /&gt;END&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-7992628087037124022?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/7992628087037124022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=7992628087037124022' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/7992628087037124022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/7992628087037124022'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/04/how-to-sort-datefieldwhere-datafield-is.html' title='How To Sort DateField(where datafield is stored as varchar)'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-7902656015995388362</id><published>2008-04-15T11:17:00.001-07:00</published><updated>2008-04-15T11:17:39.414-07:00</updated><title type='text'>Setting the execution order of Triggers in SQL Server</title><content type='html'>&lt;p&gt;Using sp_Settriggerorder stored procedure, we can define the execution order of the trigger. Here is the syntax for SQL Server 2005, taken from BOL. For complete explanation of syntax, please look at BOL.&lt;/p&gt; &lt;p&gt;&lt;i&gt;sp_settriggerorder [ @triggername = ] ‘[ triggerschema. ] triggername’&lt;br /&gt;, [ @order = ] ‘value’&lt;br /&gt;, [ @stmttype = ] ’statement_type’&lt;br /&gt;[ , [ @namespace = ] { ‘DATABASE’ | ‘SERVER’ | NULL } ]&lt;/i&gt;&lt;/p&gt; &lt;p&gt;We are interested in the second parameter: “order”. It can take three values which means that it can take into account up-to three triggers.&lt;/p&gt; &lt;ol&gt;&lt;li&gt;First – Trigger is fired first&lt;/li&gt;&lt;li&gt;Last  - Trigger is fired last&lt;/li&gt;&lt;li&gt;None – Trigger is fired in random order.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;The same procedure is available in SQLServer 2000 also but without namespace parameter because it does not support DDL triggers. Since SQL Server 2005, supports DDL trigger, namespace parameter defines the scope of the DDL trigger whether at Database level or at Server level. If value is NULL, trigger is a DML trigger.&lt;/p&gt; &lt;p&gt;We will use the same example as shown in yesterday’s  blog. Connect to database using Management Studio. Create following table..&lt;/p&gt; &lt;p&gt;CREATE TABLE TEST&lt;br /&gt;(&lt;br /&gt;COL1 INT IDENTITY (1,1),&lt;br /&gt;COL2 INT,&lt;br /&gt;COL3 INT,&lt;br /&gt;COL4 DATETIME&lt;br /&gt;)&lt;br /&gt;GO&lt;/p&gt; &lt;p&gt;Now we will create two DML triggers on the table.&lt;/p&gt; &lt;p&gt;CREATE TRIGGER dbo.TRI_TEST_2 ON dbo.TEST&lt;br /&gt;FOR INSERT&lt;br /&gt;AS&lt;br /&gt;DECLARE @ID INT&lt;br /&gt;SELECT @ID = COL1 FROM INSERTED&lt;/p&gt; &lt;p&gt;UPDATE dbo.TEST&lt;br /&gt;SET COL3 = 5 + COL2&lt;br /&gt;WHERE COL1 = @ID&lt;br /&gt;GO&lt;/p&gt; &lt;p&gt;CREATE TRIGGER dbo.TRI_TEST_1 ON dbo.TEST&lt;br /&gt;FOR INSERT&lt;br /&gt;AS&lt;br /&gt;DECLARE @ID INT&lt;br /&gt;SELECT @ID = COL1 FROM INSERTED&lt;/p&gt; &lt;p&gt;UPDATE dbo.TEST&lt;br /&gt;SET COL2 = 5 + @ID&lt;br /&gt;WHERE COL1 = @ID&lt;br /&gt;GO&lt;/p&gt; &lt;p&gt;Now let us insert the record in the table and examine the result.&lt;/p&gt; &lt;p&gt;INSERT INTO TEST(COL4) VALUES(GETDATE());&lt;/p&gt; &lt;p&gt;Following is the result.&lt;/p&gt; &lt;p&gt;SELECT * FROM TEST;&lt;/p&gt; &lt;p&gt;COL1        COL2        COL3        COL4&lt;br /&gt;———– ———– ———– ———————–&lt;br /&gt;1           6           NULL        2008-02-27 23:28:08.500&lt;/p&gt; &lt;p&gt;It is apparent  from the result that TRI_TEST_2 got executed first at which point value of COL2 was null and as a end result, COL3 contains null value.&lt;/p&gt; &lt;p&gt;Let us now define the trigger order so that TRI_TEST_1 executes first and TRI_TEST_2 executes  after TRI_TEST_1.&lt;/p&gt; &lt;p&gt;sp_Settriggerorder ‘TRI_TEST_1′,’FIRST’,'INSERT’&lt;br /&gt;GO&lt;br /&gt;sp_Settriggerorder ‘TRI_TEST_2′,’LAST’,'INSERT’&lt;br /&gt;GO&lt;/p&gt; &lt;p&gt;After executing above mentioned command, insert new record and check the result. We are displaying both the records for comparison.&lt;/p&gt; &lt;p&gt;COL1        COL2        COL3        COL4&lt;br /&gt;———– ———– ———– ———————–&lt;br /&gt;1           6           NULL        2008-02-27 23:37:03.640&lt;br /&gt;2           7           12          2008-02-27 23:45:25.357&lt;/p&gt; &lt;p&gt;With the pre-defined execution order of the trigger, all the columns are populated  correctly.  Similarly we can set the firing order for the DDL triggers as well.&lt;/p&gt; &lt;p&gt;Restrictions:&lt;br /&gt;•    For a single table, we can define only one first and last trigger for each statement.&lt;br /&gt;•    If trigger is modified using ALTER TRIGGER statement, priority of the trigger is set to None so it is very important to re-execute the sp_settriggerorder stored procedure to reset the correct execution order.&lt;br /&gt;•    If ‘FIRST’ or ‘LAST’ trigger already exists for the statement Type, reassigining new trigger to be the ‘FIRST’ one will result into an error.&lt;/p&gt; &lt;p&gt;How do we know whether any ordering is defined for the trigger or not? We can use objectproperty() function to retreive this information. Here is the query and the result.&lt;/p&gt; &lt;p&gt;SELECT OBJECT_NAME(PARENT_OBJ) TABLE_NAME,&lt;br /&gt;NAME AS TRIGGER_NAME,&lt;br /&gt;CASE OBJECTPROPERTY(ID, ‘ExecIsFirstInsertTrigger’)&lt;br /&gt;WHEN 0 THEN ‘YES’&lt;br /&gt;ELSE ‘NO’&lt;br /&gt;END AS First&lt;br /&gt;FROM SYSOBJECTS&lt;br /&gt;WHERE XTYPE = ‘TR’&lt;br /&gt;GO&lt;/p&gt; &lt;p&gt;TABLE_NAME    TRIGGER_NAME    First&lt;br /&gt;———-    ————    —–&lt;br /&gt;TEST        TRI_TEST_2      YES&lt;br /&gt;TEST        TRI_TEST_1      NO&lt;/p&gt; &lt;p&gt;Similarly we can check for ExecIsLastInsertTrigger property to see whether last trigger is defined for insert statement or not.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-7902656015995388362?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/7902656015995388362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=7902656015995388362' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/7902656015995388362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/7902656015995388362'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/04/setting-execution-order-of-triggers-in.html' title='Setting the execution order of Triggers in SQL Server'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-6946757958036959170</id><published>2008-04-15T10:44:00.000-07:00</published><updated>2008-04-15T10:48:52.471-07:00</updated><title type='text'>Update data in one table with data from another table</title><content type='html'>how to update more than one column in a table with values from columns in another table and explains how to do it in the three RDBMS that we support. &lt;p&gt;&lt;strong&gt;Table Structures and values:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;TableA has four columns: a, b, c, d (a is the primary key column)&lt;br /&gt;TableB has five columns: a1, b1, c1, d1, e1 (a1 and b1 together constitute the primary key for this table)&lt;/p&gt; &lt;p&gt;The foreign key relationship between the two tables is based on A.a = B.a1&lt;/p&gt; &lt;p&gt;The data in these 2 tables is as follows:&lt;br /&gt;I.    TableA&lt;br /&gt;a    b    c    d&lt;br /&gt;1    x    y    z&lt;br /&gt;2    a    b    c&lt;br /&gt;3    t    x    z&lt;/p&gt; &lt;p&gt;II.    TableB&lt;br /&gt;a1    b1    c1    d1    e1&lt;br /&gt;1    x1    y1    z1    40&lt;br /&gt;2    a1    b1    c1    50&lt;/p&gt; &lt;p&gt;The requirement is to write a SQL to update columns b, c and d in TableA from the columns b1, c1 and d1 from TableB where-ever the join condition satisfies and e1 &gt; 40 in TABLEB.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;SQL Server:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;UPDATE TABLEA&lt;br /&gt;SET     b = TABLEB.b1,&lt;br /&gt;c = TABLEB.c1,&lt;br /&gt;d = TABLEB.d1&lt;br /&gt;FROM TABLEA, TABLEB&lt;br /&gt;WHERE TABLEA.a = TABLEB.a1&lt;br /&gt;AND TABLEB.e1 &gt; 40&lt;br /&gt;GO&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Results after the update:&lt;/p&gt; &lt;p&gt;a    b    c    d&lt;br /&gt;————————————&lt;br /&gt;1     x          y           z&lt;br /&gt;2     a1        b1         c1&lt;br /&gt;3     t           x           z&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-6946757958036959170?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/6946757958036959170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=6946757958036959170' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/6946757958036959170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/6946757958036959170'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/04/update-data-in-one-table-with-data-from.html' title='Update data in one table with data from another table'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-3047791127609191904</id><published>2008-04-15T10:38:00.000-07:00</published><updated>2008-04-15T10:39:54.033-07:00</updated><title type='text'>Functional difference between “NOT IN” vs “NOT EXISTS” clauses</title><content type='html'>&lt;div class="entrytext"&gt;    &lt;div class="snap_preview"&gt;&lt;p&gt;“NOT IN” and “NOT EXISTS” clauses are not the same functionally or performance wise and, therefore, should be used appropriately. This blog post outlines how these commands are executed and discusses when it is appropriate to use them.&lt;/p&gt; &lt;p&gt;Sample data:&lt;br /&gt;/*******************************************************************************************&lt;br /&gt;Create a dummy EMP_MASTER table populate it with some records for illustration. This is Oracle Syntax. There are ten employees that have been created and 9 out of those 10 report to their manager: Dennis who is at the head of the chain and does not have a manager to report to.&lt;br /&gt;********************************************************************************************/&lt;br /&gt;CREATE TABLE EMP_MASTER&lt;br /&gt;(&lt;br /&gt;EMP_NBR NUMBER(10) NOT NULL PRIMARY KEY,&lt;br /&gt;EMP_NAME VARCHAR2(20 CHAR),&lt;br /&gt;MGR_NBR NUMBER(10) NULL&lt;br /&gt;)&lt;br /&gt;/&lt;/p&gt; &lt;p&gt;INSERT INTO EMP_MASTER VALUES (1, ‘DON’, 5);&lt;br /&gt;INSERT INTO EMP_MASTER VALUES (2, ‘HARI’, 5);&lt;br /&gt;INSERT INTO EMP_MASTER VALUES (3, ‘RAMESH’, 5);&lt;br /&gt;INSERT INTO EMP_MASTER VALUES (4, ‘JOE’, 5);&lt;br /&gt;INSERT INTO EMP_MASTER VALUES (5, ‘DENNIS’, NULL);&lt;br /&gt;INSERT INTO EMP_MASTER VALUES (6, ‘NIMISH’, 5);&lt;br /&gt;INSERT INTO EMP_MASTER VALUES (7, ‘JESSIE’, 5);&lt;br /&gt;INSERT INTO EMP_MASTER VALUES (8, ‘KEN’, 5);&lt;br /&gt;INSERT INTO EMP_MASTER VALUES (9, ‘AMBER’, 5);&lt;br /&gt;INSERT INTO EMP_MASTER VALUES (10, ‘JIM’, 5);&lt;br /&gt;COMMIT&lt;br /&gt;/&lt;/p&gt; &lt;p&gt;Resulting in:&lt;/p&gt; &lt;table style="border: medium none ; border-collapse: collapse;" class="MsoTableGrid" border="1" cellpadding="0" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td style="border: 1pt solid windowtext; padding: 0pt 5.4pt; background-color: transparent;" valign="top"&gt; &lt;p style="margin: 0pt;" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; color: blue;"&gt;&lt;span style="font-family:Arial (W1);"&gt;EMP_NBR&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext rgb(212, 208, 200); border-width: 1pt 1pt 1pt medium; padding: 0pt 5.4pt; background-color: transparent;" valign="top"&gt;&lt;span style="font-size: 10pt; color: blue;"&gt;&lt;span style="font-family:Arial (W1);"&gt;EMP_NAME&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext rgb(212, 208, 200); border-width: 1pt 1pt 1pt medium; padding: 0pt 5.4pt; width: 65.85pt; background-color: transparent;" valign="top" width="88"&gt;&lt;span style="font-size: 10pt; color: blue;"&gt;&lt;span style="font-family:Arial (W1);"&gt;MGR_NBR&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="border-style: none solid solid; border-color: rgb(212, 208, 200) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0pt 5.4pt; background-color: transparent;" valign="top"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; background-color: transparent;" valign="top"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;DON&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; width: 65.85pt; background-color: transparent;" valign="top" width="88"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;5&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="border-style: none solid solid; border-color: rgb(212, 208, 200) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0pt 5.4pt; background-color: transparent;" valign="top"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; background-color: transparent;" valign="top"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;HARI&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; width: 65.85pt; background-color: transparent;" valign="top" width="88"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;5&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="border-style: none solid solid; border-color: rgb(212, 208, 200) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0pt 5.4pt; background-color: transparent;" valign="top"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; background-color: transparent;" valign="top"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;RAMESH&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; width: 65.85pt; background-color: transparent;" valign="top" width="88"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;5&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="border-style: none solid solid; border-color: rgb(212, 208, 200) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0pt 5.4pt; background-color: transparent;" valign="top"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;4&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; background-color: transparent;" valign="top"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;JOE&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; width: 65.85pt; background-color: transparent;" valign="top" width="88"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;5&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="border-style: none solid solid; border-color: rgb(212, 208, 200) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0pt 5.4pt; background-color: transparent;" valign="top"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;5&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; background-color: transparent;" valign="top"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;DENNIS&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; width: 65.85pt; background-color: transparent;" valign="top" width="88"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;NULL&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="border-style: none solid solid; border-color: rgb(212, 208, 200) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0pt 5.4pt; background-color: transparent;" valign="top"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;6&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; background-color: transparent;" valign="top"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;NIMISH&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; width: 65.85pt; background-color: transparent;" valign="top" width="88"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;5&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="border-style: none solid solid; border-color: rgb(212, 208, 200) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0pt 5.4pt; background-color: transparent;" valign="top"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;7&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; background-color: transparent;" valign="top"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;JESSIE&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; width: 65.85pt; background-color: transparent;" valign="top" width="88"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;5&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="border-style: none solid solid; border-color: rgb(212, 208, 200) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0pt 5.4pt; background-color: transparent;" valign="top"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;8&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; background-color: transparent;" valign="top"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;KEN&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; width: 65.85pt; background-color: transparent;" valign="top" width="88"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;5&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="border-style: none solid solid; border-color: rgb(212, 208, 200) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0pt 5.4pt; background-color: transparent;" valign="top"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;9&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; background-color: transparent;" valign="top"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;AMBER&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; width: 65.85pt; background-color: transparent;" valign="top" width="88"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;5&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="border-style: none solid solid; border-color: rgb(212, 208, 200) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0pt 5.4pt; background-color: transparent;" valign="top"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;10&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; background-color: transparent;" valign="top"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;JIM&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; width: 65.85pt; background-color: transparent;" valign="top" width="88"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family:Arial (W1);"&gt;5&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;Now, the aim is to find all those employees who are not managers. Let’s see how we can achieve that by using the “NOT IN” vs the “NOT EXISTS” clause.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;NOT IN&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;SQL&gt; select count(*) from emp_master where emp_nbr not in ( select mgr_nbr from emp_master );&lt;br /&gt;COUNT(*)&lt;br /&gt;———-&lt;br /&gt;0&lt;/p&gt; &lt;p&gt;This means that everyone is a manager…hmmm, I wonder whether anything ever gets done in that case &lt;img src="http://decipherinfosys.wordpress.com/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" /&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt; NOT EXISTS&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;SQL&gt; select count(*) from emp_master T1 where not exists ( select 1 from emp_master T2 where t2.mgr_nbr = t1.emp_nbr );&lt;/p&gt; &lt;p&gt;COUNT(*)&lt;br /&gt;———-&lt;br /&gt;9&lt;/p&gt; &lt;p&gt;Now there are 9 people who are not managers. So, you can clearly see the difference that NULL values make and since NULL != NULL in SQL, the NOT IN clause does not return any records back. (in MS SQL Server, depending upon the ANSI NULLS setting, the behavior can be altered but this post only talks about the behavior that is same in Oracle, DB2 LUW and MS SQL Server).&lt;/p&gt; &lt;p&gt;&lt;strong&gt; Performance implications:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;When using “NOT IN”, the query performs nested full table scans, whereas for “NOT EXISTS”, query can use an index within the sub-query.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Another Optional Method&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Another way of doing this is to use an outer join and check for NULL values in the other table:&lt;/p&gt; &lt;p&gt;SELECT COUNT(*)&lt;br /&gt;FROM EMP_MASTER T1&lt;br /&gt;LEFT OUTER JOIN EMP_MASTER T2&lt;br /&gt;ON T1.EMP_NBR = T2.MGR_NBR&lt;br /&gt;WHERE T2.MGR_NBR IS NULL&lt;br /&gt;/&lt;/p&gt; &lt;p&gt;Of course, there should be other selection criteria as well (possibly a range search criteria, an equality SARG (searchable argument) criteria etc.) to help improve the selectivity besides just the NOT EXISTS clause.&lt;/p&gt; &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-3047791127609191904?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/3047791127609191904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=3047791127609191904' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/3047791127609191904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/3047791127609191904'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/04/functional-difference-between-not-in-vs.html' title='Functional difference between “NOT IN” vs “NOT EXISTS” clauses'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-5432881726705557266</id><published>2008-04-15T10:29:00.000-07:00</published><updated>2008-04-15T10:32:39.773-07:00</updated><title type='text'>Multiple NULL values in a Unique index in SQL</title><content type='html'>&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;this project needed &lt;span class="kwrd"&gt;to&lt;/span&gt; support &lt;span class="kwrd"&gt;having&lt;/span&gt; multiple &lt;span class="kwrd"&gt;NULL&lt;/span&gt; &lt;span class="kwrd"&gt;values&lt;/span&gt; &lt;span class="kwrd"&gt;in&lt;/span&gt; the &lt;span class="kwrd"&gt;column&lt;/span&gt; &lt;span class="kwrd"&gt;and&lt;/span&gt;&lt;br /&gt;still have a &lt;span class="kwrd"&gt;UNIQUE&lt;/span&gt; &lt;span class="kwrd"&gt;constraint&lt;/span&gt;. That &lt;span class="kwrd"&gt;is&lt;/span&gt; allowed &lt;span class="kwrd"&gt;by&lt;/span&gt; Oracle but &lt;span class="kwrd"&gt;not&lt;/span&gt; &lt;span class="kwrd"&gt;in&lt;/span&gt; &lt;span class="kwrd"&gt;SQL&lt;/span&gt; Server&lt;br /&gt; &lt;span class="kwrd"&gt;and&lt;/span&gt; DB2 LUW. There &lt;span class="kwrd"&gt;is&lt;/span&gt; a way &lt;span class="kwrd"&gt;to&lt;/span&gt; make this &lt;span class="kwrd"&gt;work&lt;/span&gt; &lt;span class="kwrd"&gt;in&lt;/span&gt; &lt;span class="kwrd"&gt;SQL&lt;/span&gt; Server &lt;span class="kwrd"&gt;and&lt;/span&gt; DB2 LUW also but&lt;br /&gt; that requires a &lt;span class="kwrd"&gt;work&lt;/span&gt;-around. Consider this &lt;span class="kwrd"&gt;table&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;CREATE&lt;/span&gt; &lt;span class="kwrd"&gt;TABLE&lt;/span&gt; TEST_UQ (COL1 &lt;span class="kwrd"&gt;INT&lt;/span&gt; &lt;span class="kwrd"&gt;IDENTITY&lt;/span&gt;(1,1) &lt;span class="kwrd"&gt;PRIMARY&lt;/span&gt; &lt;span class="kwrd"&gt;KEY&lt;/span&gt;, COL2 NVARCHAR(10) &lt;span class="kwrd"&gt;NULL&lt;/span&gt;)&lt;br /&gt;&lt;span class="kwrd"&gt;GO&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;In&lt;/span&gt; this &lt;span class="kwrd"&gt;table&lt;/span&gt;, COL1 has been declared &lt;span class="kwrd"&gt;as&lt;/span&gt; the &lt;span class="kwrd"&gt;primary&lt;/span&gt; &lt;span class="kwrd"&gt;key&lt;/span&gt; but we want a &lt;span class="kwrd"&gt;UNIQUE&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;constraint&lt;/span&gt; &lt;span class="kwrd"&gt;to&lt;/span&gt; be put &lt;span class="kwrd"&gt;on&lt;/span&gt; COL2 &lt;span class="kwrd"&gt;as&lt;/span&gt; well. Please note that COL2 &lt;span class="kwrd"&gt;is&lt;/span&gt; a nullable &lt;span class="kwrd"&gt;column&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;and&lt;/span&gt; that &lt;span class="kwrd"&gt;SQL&lt;/span&gt; Server does &lt;span class="kwrd"&gt;not&lt;/span&gt; allow multiple &lt;span class="kwrd"&gt;NULL&lt;/span&gt; &lt;span class="kwrd"&gt;values&lt;/span&gt; &lt;span class="kwrd"&gt;in&lt;/span&gt; a &lt;span class="kwrd"&gt;UNIQUE&lt;/span&gt; &lt;span class="kwrd"&gt;index&lt;/span&gt; &lt;span class="kwrd"&gt;and&lt;/span&gt; treats&lt;br /&gt;them the same way. We can test it &lt;span class="kwrd"&gt;out&lt;/span&gt; &lt;span class="kwrd"&gt;prior&lt;/span&gt; &lt;span class="kwrd"&gt;to&lt;/span&gt; proceeding &lt;span class="kwrd"&gt;with&lt;/span&gt; the &lt;span class="kwrd"&gt;work&lt;/span&gt;-around:&lt;br /&gt;&lt;br /&gt;Let tus &lt;span class="kwrd"&gt;create&lt;/span&gt; a &lt;span class="kwrd"&gt;unique&lt;/span&gt; &lt;span class="kwrd"&gt;index&lt;/span&gt; &lt;span class="kwrd"&gt;first&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;CREATE&lt;/span&gt; &lt;span class="kwrd"&gt;UNIQUE&lt;/span&gt; &lt;span class="kwrd"&gt;INDEX&lt;/span&gt; TEST_UQ_IND_1 &lt;span class="kwrd"&gt;ON&lt;/span&gt; TEST_UQ (COL2)&lt;br /&gt;&lt;span class="kwrd"&gt;GO&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now, let us try &lt;span class="kwrd"&gt;to&lt;/span&gt; &lt;span class="kwrd"&gt;insert&lt;/span&gt; these &lt;span class="kwrd"&gt;values&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;insert&lt;/span&gt; &lt;span class="kwrd"&gt;into&lt;/span&gt; test_uq (col2) &lt;span class="kwrd"&gt;values&lt;/span&gt; (’abc’);&lt;br /&gt;&lt;span class="kwrd"&gt;insert&lt;/span&gt; &lt;span class="kwrd"&gt;into&lt;/span&gt; test_uq (col2) &lt;span class="kwrd"&gt;values&lt;/span&gt; (’xyz’);&lt;br /&gt;&lt;span class="kwrd"&gt;insert&lt;/span&gt; &lt;span class="kwrd"&gt;into&lt;/span&gt; test_uq (col2) &lt;span class="kwrd"&gt;values&lt;/span&gt; (&lt;span class="kwrd"&gt;Null&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;All&lt;/span&gt; three will &lt;span class="kwrd"&gt;go&lt;/span&gt; &lt;span class="kwrd"&gt;in&lt;/span&gt;. &lt;span class="kwrd"&gt;After&lt;/span&gt; that, try &lt;span class="kwrd"&gt;to&lt;/span&gt; &lt;span class="kwrd"&gt;insert&lt;/span&gt; the &lt;span class="kwrd"&gt;NULL&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt; again:&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;insert&lt;/span&gt; &lt;span class="kwrd"&gt;into&lt;/span&gt; test_uq (col2) &lt;span class="kwrd"&gt;values&lt;/span&gt; (&lt;span class="kwrd"&gt;Null&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;and&lt;/span&gt; you will &lt;span class="kwrd"&gt;get&lt;/span&gt; the error:&lt;br /&gt;&lt;br /&gt;Msg 2601, &lt;span class="kwrd"&gt;Level&lt;/span&gt; 14, &lt;span class="kwrd"&gt;State&lt;/span&gt; 1, Line 1&lt;br /&gt;Cannot &lt;span class="kwrd"&gt;insert&lt;/span&gt; duplicate &lt;span class="kwrd"&gt;key&lt;/span&gt; &lt;span class="kwrd"&gt;row&lt;/span&gt; &lt;span class="kwrd"&gt;in&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; ‘dbo.test_uq’ &lt;span class="kwrd"&gt;with&lt;/span&gt; &lt;span class="kwrd"&gt;unique&lt;/span&gt; &lt;span class="kwrd"&gt;index&lt;/span&gt;&lt;br /&gt;‘TEST_UQ_IND_1′.&lt;br /&gt;The &lt;span class="kwrd"&gt;statement&lt;/span&gt; has been terminated.&lt;br /&gt;&lt;br /&gt;The &lt;span class="kwrd"&gt;work&lt;/span&gt;-around &lt;span class="kwrd"&gt;is&lt;/span&gt; &lt;span class="kwrd"&gt;to&lt;/span&gt; have a computed &lt;span class="kwrd"&gt;column&lt;/span&gt; &lt;span class="kwrd"&gt;and&lt;/span&gt; define the &lt;span class="kwrd"&gt;unique&lt;/span&gt; &lt;span class="kwrd"&gt;constraint&lt;/span&gt; &lt;span class="kwrd"&gt;on&lt;/span&gt; it.&lt;br /&gt; Here &lt;span class="kwrd"&gt;is&lt;/span&gt; how you can do that:&lt;br /&gt;&lt;br /&gt;1) &lt;span class="kwrd"&gt;First&lt;/span&gt;, let’s &lt;span class="kwrd"&gt;drop&lt;/span&gt; the existing &lt;span class="kwrd"&gt;unique&lt;/span&gt; &lt;span class="kwrd"&gt;index&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;drop&lt;/span&gt; &lt;span class="kwrd"&gt;index&lt;/span&gt; test_uq.TEST_UQ_IND_1&lt;br /&gt;&lt;br /&gt;2) &lt;span class="kwrd"&gt;Next&lt;/span&gt;, let’s &lt;span class="kwrd"&gt;add&lt;/span&gt; the computed &lt;span class="kwrd"&gt;column&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;ALTER&lt;/span&gt; &lt;span class="kwrd"&gt;TABLE&lt;/span&gt; TEST_UQ &lt;span class="kwrd"&gt;ADD&lt;/span&gt; COL3 &lt;span class="kwrd"&gt;AS&lt;/span&gt; (&lt;span class="kwrd"&gt;CASE&lt;/span&gt; &lt;span class="kwrd"&gt;WHEN&lt;/span&gt; COL2 &lt;span class="kwrd"&gt;IS&lt;/span&gt; &lt;span class="kwrd"&gt;NULL&lt;/span&gt; &lt;span class="kwrd"&gt;THEN&lt;/span&gt; &lt;span class="kwrd"&gt;CAST&lt;/span&gt;(COL1 &lt;span class="kwrd"&gt;AS&lt;/span&gt; NVARCHAR(10)) &lt;span class="kwrd"&gt;ELSE&lt;/span&gt; COL2 &lt;span class="kwrd"&gt;END&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;In&lt;/span&gt; this command, we &lt;span class="kwrd"&gt;are&lt;/span&gt; stating that &lt;span class="kwrd"&gt;whenever&lt;/span&gt; the &lt;span class="kwrd"&gt;value&lt;/span&gt; &lt;span class="kwrd"&gt;for&lt;/span&gt; COL2 &lt;span class="kwrd"&gt;is&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;,&lt;br /&gt;replace it &lt;span class="kwrd"&gt;with&lt;/span&gt; the &lt;span class="kwrd"&gt;primary&lt;/span&gt; &lt;span class="kwrd"&gt;key&lt;/span&gt; &lt;span class="kwrd"&gt;after&lt;/span&gt; casting it &lt;span class="kwrd"&gt;to&lt;/span&gt; the same &lt;span class="kwrd"&gt;data&lt;/span&gt;-type &lt;span class="kwrd"&gt;as&lt;/span&gt; that &lt;span class="kwrd"&gt;of&lt;/span&gt; COL2. &lt;span class="kwrd"&gt;By&lt;/span&gt; doing so, we will mae sure that COL3&lt;br /&gt; &lt;span class="kwrd"&gt;is&lt;/span&gt; always &lt;span class="kwrd"&gt;NOT&lt;/span&gt; &lt;span class="kwrd"&gt;NULL&lt;/span&gt; &lt;span class="kwrd"&gt;and&lt;/span&gt; always have &lt;span class="kwrd"&gt;unique&lt;/span&gt; &lt;span class="kwrd"&gt;values&lt;/span&gt;. This approach will &lt;span class="kwrd"&gt;work&lt;/span&gt; well &lt;span class="kwrd"&gt;in&lt;/span&gt; this &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="kwrd"&gt;as&lt;/span&gt; there should never be a clash &lt;span class="kwrd"&gt;of&lt;/span&gt;&lt;br /&gt;the &lt;span class="kwrd"&gt;values&lt;/span&gt; &lt;span class="kwrd"&gt;between&lt;/span&gt; COL1 &lt;span class="kwrd"&gt;and&lt;/span&gt; COL2. &lt;span class="kwrd"&gt;For&lt;/span&gt; example, what-&lt;span class="kwrd"&gt;if&lt;/span&gt; you needed &lt;span class="kwrd"&gt;to&lt;/span&gt; do this &lt;span class="kwrd"&gt;on&lt;/span&gt; a &lt;span class="kwrd"&gt;column&lt;/span&gt; that was also an interger &lt;span class="kwrd"&gt;data&lt;/span&gt;-type &lt;span class="kwrd"&gt;column&lt;/span&gt;? &lt;span class="kwrd"&gt;&lt;br /&gt;In&lt;/span&gt; that &lt;span class="kwrd"&gt;case&lt;/span&gt;, chances &lt;span class="kwrd"&gt;of&lt;/span&gt; clashes &lt;span class="kwrd"&gt;of&lt;/span&gt; the &lt;span class="kwrd"&gt;data&lt;/span&gt; can arise. &lt;span class="kwrd"&gt;If&lt;/span&gt; you suspect a clash, you can have additional logic &lt;span class="kwrd"&gt;like&lt;/span&gt;:&lt;br /&gt; (&lt;span class="kwrd"&gt;CASE&lt;/span&gt; &lt;span class="kwrd"&gt;WHEN&lt;/span&gt; COL2 &lt;span class="kwrd"&gt;IS&lt;/span&gt; &lt;span class="kwrd"&gt;NULL&lt;/span&gt; &lt;span class="kwrd"&gt;then&lt;/span&gt; -1 * COL1 &lt;span class="kwrd"&gt;ELSE&lt;/span&gt; COL2 &lt;span class="kwrd"&gt;END&lt;/span&gt;). That way, you can still maintain the logic &lt;span class="kwrd"&gt;and&lt;/span&gt; the uniqueness.&lt;br /&gt;&lt;br /&gt;3) Now, &lt;span class="kwrd"&gt;create&lt;/span&gt; the &lt;span class="kwrd"&gt;unique&lt;/span&gt; &lt;span class="kwrd"&gt;index&lt;/span&gt; &lt;span class="kwrd"&gt;on&lt;/span&gt; this &lt;span class="kwrd"&gt;column&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;CREATE&lt;/span&gt; &lt;span class="kwrd"&gt;UNIQUE&lt;/span&gt; &lt;span class="kwrd"&gt;INDEX&lt;/span&gt; TEST_UQ_IND_1 &lt;span class="kwrd"&gt;ON&lt;/span&gt; TEST_UQ (COL3)&lt;br /&gt;&lt;span class="kwrd"&gt;GO&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;4) &lt;span class="kwrd"&gt;Next&lt;/span&gt;, let’s try &lt;span class="kwrd"&gt;to&lt;/span&gt; &lt;span class="kwrd"&gt;insert&lt;/span&gt; the &lt;span class="kwrd"&gt;NULL&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt; again:&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;insert&lt;/span&gt; &lt;span class="kwrd"&gt;into&lt;/span&gt; test_uq (col2) &lt;span class="kwrd"&gt;values&lt;/span&gt; (&lt;span class="kwrd"&gt;Null&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;This &lt;span class="kwrd"&gt;time&lt;/span&gt; it will &lt;span class="kwrd"&gt;go&lt;/span&gt; through. &lt;span class="kwrd"&gt;If&lt;/span&gt; we examine the contents &lt;span class="kwrd"&gt;of&lt;/span&gt; the &lt;span class="kwrd"&gt;table&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;COL1        COL2       COL3&lt;br /&gt;---------&lt;span class="rem"&gt;-- ---------- ----------&lt;/span&gt;&lt;br /&gt;1           abc        abc&lt;br /&gt;2           xyz        xyz&lt;br /&gt;3           &lt;span class="kwrd"&gt;NULL&lt;/span&gt;       3&lt;br /&gt;5           &lt;span class="kwrd"&gt;NULL&lt;/span&gt;       5&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;As&lt;/span&gt; you can see, we have allowed multiple &lt;span class="kwrd"&gt;NULL&lt;/span&gt; &lt;span class="kwrd"&gt;values&lt;/span&gt; now &lt;span class="kwrd"&gt;for&lt;/span&gt;&lt;br /&gt;COL2 &lt;span class="kwrd"&gt;and&lt;/span&gt; still maintained the uniqueness. We can &lt;span class="kwrd"&gt;next&lt;/span&gt; try &lt;span class="kwrd"&gt;to&lt;/span&gt; &lt;span class="kwrd"&gt;insert&lt;/span&gt; the &lt;span class="kwrd"&gt;value&lt;/span&gt;&lt;br /&gt;“abc” again &lt;span class="kwrd"&gt;and&lt;/span&gt; see &lt;span class="kwrd"&gt;if&lt;/span&gt; that preserves our uniqueness criteria:&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;insert&lt;/span&gt; &lt;span class="kwrd"&gt;into&lt;/span&gt; test_uq (col2) &lt;span class="kwrd"&gt;values&lt;/span&gt; (’abc’);&lt;br /&gt;&lt;br /&gt;This &lt;span class="kwrd"&gt;time&lt;/span&gt;, we will &lt;span class="kwrd"&gt;get&lt;/span&gt; an error:&lt;br /&gt;&lt;br /&gt;Msg 2601, &lt;span class="kwrd"&gt;Level&lt;/span&gt; 14, &lt;span class="kwrd"&gt;State&lt;/span&gt; 1, Line 1&lt;br /&gt;Cannot &lt;span class="kwrd"&gt;insert&lt;/span&gt; duplicate &lt;span class="kwrd"&gt;key&lt;/span&gt; &lt;span class="kwrd"&gt;row&lt;/span&gt; &lt;span class="kwrd"&gt;in&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; ‘dbo.test_uq’ &lt;span class="kwrd"&gt;with&lt;/span&gt; &lt;span class="kwrd"&gt;unique&lt;/span&gt; &lt;span class="kwrd"&gt;index&lt;/span&gt; ‘TEST_UQ_IND_1′.&lt;br /&gt;The &lt;span class="kwrd"&gt;statement&lt;/span&gt; has been terminated.&lt;br /&gt;&lt;br /&gt;So, &lt;span class="kwrd"&gt;using&lt;/span&gt; this &lt;span class="kwrd"&gt;work&lt;/span&gt;-around, one can &lt;span class="kwrd"&gt;preserve&lt;/span&gt; the same behavior &lt;span class="kwrd"&gt;as&lt;/span&gt; Oracle.&lt;br /&gt;This might be useful &lt;span class="kwrd"&gt;to&lt;/span&gt; you &lt;span class="kwrd"&gt;as&lt;/span&gt; well &lt;span class="kwrd"&gt;in&lt;/span&gt; &lt;span class="kwrd"&gt;case&lt;/span&gt; you &lt;span class="kwrd"&gt;are&lt;/span&gt; working &lt;span class="kwrd"&gt;on&lt;/span&gt; a project&lt;br /&gt;that requires conversion &lt;span class="kwrd"&gt;from&lt;/span&gt; Oracle &lt;span class="kwrd"&gt;to&lt;/span&gt; &lt;span class="kwrd"&gt;SQL&lt;/span&gt; Server &lt;span class="kwrd"&gt;or&lt;/span&gt; Oracle &lt;span class="kwrd"&gt;to&lt;/span&gt; DB2 LUW.&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-5432881726705557266?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/5432881726705557266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=5432881726705557266' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/5432881726705557266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/5432881726705557266'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/04/multiple-null-values-in-unique-index-in.html' title='Multiple NULL values in a Unique index in SQL'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-5170465874814422306</id><published>2008-04-10T07:37:00.001-07:00</published><updated>2008-04-10T07:37:48.883-07:00</updated><title type='text'>Using Index</title><content type='html'>&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;select&lt;/span&gt; *&lt;span class="kwrd"&gt;from&lt;/span&gt; ZIPCodes &lt;span class="kwrd"&gt;where&lt;/span&gt; StateName = ‘&lt;span class="kwrd"&gt;New&lt;/span&gt; York’&lt;br /&gt;&lt;br /&gt;– &lt;span class="kwrd"&gt;Create&lt;/span&gt; &lt;span class="kwrd"&gt;Index&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;create&lt;/span&gt; &lt;span class="kwrd"&gt;nonclustered&lt;/span&gt; &lt;span class="kwrd"&gt;index&lt;/span&gt; idxStateName &lt;span class="kwrd"&gt;on&lt;/span&gt; ZIPCodes(StateName)&lt;br /&gt;&lt;span class="kwrd"&gt;create&lt;/span&gt; &lt;span class="kwrd"&gt;nonclustered&lt;/span&gt; &lt;span class="kwrd"&gt;index&lt;/span&gt; idxZIPType &lt;span class="kwrd"&gt;on&lt;/span&gt; ZIPCodes(ZIPType)&lt;br /&gt;&lt;br /&gt;– &lt;span class="kwrd"&gt;Use&lt;/span&gt; &lt;span class="kwrd"&gt;Index&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;select&lt;/span&gt; *&lt;span class="kwrd"&gt;from&lt;/span&gt; ZIPCodes &lt;span class="kwrd"&gt;with&lt;/span&gt;(&lt;span class="kwrd"&gt;INDEX&lt;/span&gt;(idxZIPType)) &lt;span class="kwrd"&gt;where&lt;/span&gt; ZIPType = ‘S’&lt;br /&gt;&lt;br /&gt;– List &lt;span class="kwrd"&gt;of&lt;/span&gt; Indexes &lt;span class="kwrd"&gt;on&lt;/span&gt; Perticular &lt;span class="kwrd"&gt;Table&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;exec&lt;/span&gt; sp_helpindex ‘ps_client_master’&lt;br /&gt;&lt;br /&gt;– &lt;span class="kwrd"&gt;Drop&lt;/span&gt; &lt;span class="kwrd"&gt;Index&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;drop&lt;/span&gt; &lt;span class="kwrd"&gt;index&lt;/span&gt; ps_client_master.ps_client_master_Index_1&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-5170465874814422306?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/5170465874814422306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=5170465874814422306' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/5170465874814422306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/5170465874814422306'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/04/using-index.html' title='Using Index'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-638889366957932733</id><published>2008-03-31T13:17:00.000-07:00</published><updated>2008-03-31T13:20:00.416-07:00</updated><title type='text'>The COALESCE Function</title><content type='html'>&lt;p&gt;A more efficient approach to creating dynamic WHERE clauses involves using the COALESCE function. This function returns the first non-null expression in its expression list. The following example shows how it works. &lt;/p&gt;&lt;pre&gt;&lt;b&gt;DECLARE @Exp1 varchar(30),&lt;br /&gt;       @Exp2 varchar(30)&lt;br /&gt;&lt;br /&gt;SET @Exp1 = NULL&lt;br /&gt;SET @Exp2 = 'SQL Server'&lt;br /&gt;&lt;br /&gt;SELECT COALESCE(@Exp1,@Exp2)&lt;br /&gt;&lt;br /&gt;&lt;span style="color:green;"&gt;--Results--&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;------------------------------&lt;br /&gt;SQL Server&lt;/b&gt;&lt;/pre&gt;  &lt;p&gt;The function processes the expression list from left-to-right and returns the first non-null value. The COALESCE function can process an infinite number of expressions (e.g., COALESCE(@Exp1,@Exp2,@Exp3,@Exp4,...)), but for the example presented in this article only two are needed. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-638889366957932733?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/638889366957932733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=638889366957932733' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/638889366957932733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/638889366957932733'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/coalesce-function.html' title='The COALESCE Function'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-1178627757671694415</id><published>2008-03-29T15:00:00.001-07:00</published><updated>2008-03-29T15:00:46.697-07:00</updated><title type='text'>Return Null If A Value Is A Certain Value</title><content type='html'>You need to return NULL only if the value of your data is a certain value. How do you do this?&lt;br /&gt;There are three different ways.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;NULLIF&lt;/strong&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;DECLARE&lt;/span&gt; @1 &lt;span style="color: rgb(51, 51, 255);"&gt;char&lt;/span&gt;(1)&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; @1 =&lt;span style="color: rgb(255, 0, 0);"&gt;'D' &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; &lt;span style="color: rgb(204, 51, 204);"&gt;NULLIF&lt;/span&gt;(@1&lt;span style="color: rgb(255, 0, 0);"&gt;,'D'&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;REPLACE&lt;/strong&gt;&lt;br /&gt;This should not really be used, I just added it here to demonstrate that you can in fact use it.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;DECLARE&lt;/span&gt; @1 &lt;span style="color: rgb(51, 51, 255);"&gt;char&lt;/span&gt;(1)&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; @1 =&lt;span style="color: rgb(255, 0, 0);"&gt;'D' &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; &lt;span style="color: rgb(204, 51, 204);"&gt;REPLACE&lt;/span&gt;(@1,&lt;span style="color: rgb(255, 0, 0);"&gt;'D'&lt;/span&gt;,NULL)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;CASE&lt;/strong&gt;&lt;br /&gt;With case you can test for a range of values. You can test for example for values between A and D. If you reverse the logic then you also don't need to provide the ELSE part since it defaults to NULL anyway.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;DECLARE&lt;/span&gt; @1 &lt;span style="color: rgb(51, 51, 255);"&gt;char&lt;/span&gt;(1)&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; @1 =&lt;span style="color: rgb(255, 0, 0);"&gt;'D' &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; &lt;span style="color: rgb(204, 51, 204);"&gt;CASE&lt;/span&gt; @1 &lt;span style="color: rgb(51, 51, 255);"&gt;WHEN&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'D'&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;THEN&lt;/span&gt; NULL &lt;span style="color: rgb(51, 51, 255);"&gt;ELSE&lt;/span&gt; @1 &lt;span style="color: rgb(51, 51, 255);"&gt;END&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--No else needed&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; &lt;span style="color: rgb(204, 51, 204);"&gt;CASE&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;WHEN&lt;/span&gt; @1 &lt;&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'D'&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;THEN&lt;/span&gt; @1 &lt;span style="color: rgb(51, 51, 255);"&gt;END&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And this is how you test for a range.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--Null&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;DECLARE&lt;/span&gt; @1 &lt;span style="color: rgb(51, 51, 255);"&gt;char&lt;/span&gt;(1)&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; @1 =&lt;span style="color: rgb(255, 0, 0);"&gt;'D' &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; &lt;span style="color: rgb(204, 51, 204);"&gt;CASE&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;WHEN&lt;/span&gt; @1 BETWEEN &lt;span style="color: rgb(255, 0, 0);"&gt;'A'&lt;/span&gt; AND&lt;span style="color: rgb(255, 0, 0);"&gt; 'D'&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;THEN&lt;/span&gt; NULL &lt;span style="color: rgb(51, 51, 255);"&gt;ELSE&lt;/span&gt; @1 &lt;span style="color: rgb(51, 51, 255);"&gt;END&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--E&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;DECLARE&lt;/span&gt; @1 &lt;span style="color: rgb(51, 51, 255);"&gt;char&lt;/span&gt;(1)&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; @1 =&lt;span style="color: rgb(255, 0, 0);"&gt;'E' &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; &lt;span style="color: rgb(204, 51, 204);"&gt;CASE&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;WHEN&lt;/span&gt; @1 BETWEEN &lt;span style="color: rgb(255, 0, 0);"&gt;'A'&lt;/span&gt; AND&lt;span color="#ff0000"&gt; 'D'&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;THEN&lt;/span&gt; NULL &lt;span style="color: rgb(51, 51, 255);"&gt;ELSE&lt;/span&gt; @1 &lt;span style="color: rgb(51, 51, 255);"&gt;END&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-1178627757671694415?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/1178627757671694415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=1178627757671694415' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/1178627757671694415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/1178627757671694415'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/return-null-if-value-is-certain-value.html' title='Return Null If A Value Is A Certain Value'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-3805225942203094663</id><published>2008-03-29T14:50:00.000-07:00</published><updated>2008-03-29T14:51:35.791-07:00</updated><title type='text'>How to return random results from SQL SERVER</title><content type='html'>Sometimes you want to display 4 random articles/pics/you name it on your web page and you don’t want to write a lot of code.&lt;br /&gt;SQL SERVER 2000 has a neat little function called NEWID() that can help you out.&lt;br /&gt;Run the code below from Query Analyzer and keep hitting F5.&lt;br /&gt;You will see that the results will be different every time.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;USE&lt;/span&gt; pubs&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;SELECT&lt;/span&gt; top 4 * &lt;span style="color: rgb(51, 102, 255);"&gt;FROM&lt;/span&gt; dbo.authors&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;ORDER BY&lt;/span&gt; &lt;span style="color: rgb(255, 153, 255);"&gt;NEWID&lt;/span&gt;()&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-3805225942203094663?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/3805225942203094663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=3805225942203094663' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/3805225942203094663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/3805225942203094663'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/how-to-return-random-results-from-sql.html' title='How to return random results from SQL SERVER'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-6197800574606431363</id><published>2008-03-29T14:48:00.000-07:00</published><updated>2008-03-29T14:50:29.639-07:00</updated><title type='text'>Date formatting in SQL Server</title><content type='html'>&lt;span style="color: rgb(51, 102, 255);"&gt;Declare&lt;/span&gt; @d &lt;span style="color: rgb(51, 102, 255);"&gt;datetime&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;select&lt;/span&gt; @d = &lt;span style="color: rgb(204, 51, 204);"&gt;getdate&lt;/span&gt;()&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;select&lt;/span&gt; @d &lt;span style="color: rgb(51, 102, 255);"&gt;as&lt;/span&gt; OriginalDate,&lt;br /&gt;&lt;span style="color: rgb(204, 51, 204);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(51, 102, 255);"&gt;varchar&lt;/span&gt;,@d,100) &lt;span style="color: rgb(51, 102, 255);"&gt;as&lt;/span&gt; ConvertedDate,&lt;br /&gt;100 &lt;span style="color: rgb(51, 102, 255);"&gt;as&lt;/span&gt; FormatValue,&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'mon dd yyyy hh:miAM (or PM)'&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt; as&lt;/span&gt; OutputFormat&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;union all&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;select&lt;/span&gt; @d,&lt;span style="color: rgb(204, 51, 204);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(51, 102, 255);"&gt;varchar&lt;/span&gt;,@d,101),101,&lt;span style="color: rgb(255, 0, 0);"&gt;'mm/dd/yy'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;union all&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;select&lt;/span&gt; @d,&lt;span style="color: rgb(204, 51, 204);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(51, 102, 255);"&gt;varchar&lt;/span&gt;,@d,102),102,&lt;span style="color: rgb(255, 0, 0);"&gt;'yy.mm.dd'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;union all&lt;br /&gt;select&lt;/span&gt; @d,&lt;span style="color: rgb(204, 51, 204);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(51, 102, 255);"&gt;varchar&lt;/span&gt;,@d,103),103,&lt;span style="color: rgb(255, 0, 0);"&gt;'dd/mm/yy'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;union all&lt;br /&gt;select&lt;/span&gt; @d,&lt;span style="color: rgb(204, 51, 204);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(51, 102, 255);"&gt;varchar&lt;/span&gt;,@d,104),104,&lt;span style="color: rgb(255, 0, 0);"&gt;'dd.mm.yy'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;union all&lt;br /&gt;select&lt;/span&gt; @d,&lt;span style="color: rgb(204, 51, 204);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(51, 102, 255);"&gt;varchar&lt;/span&gt;,@d,105),105,&lt;span style="color: rgb(255, 0, 0);"&gt;'dd-mm-yy'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;union all&lt;br /&gt;select&lt;/span&gt; @d,&lt;span style="color: rgb(204, 51, 204);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(51, 102, 255);"&gt;varchar&lt;/span&gt;,@d,106),106,&lt;span style="color: rgb(255, 0, 0);"&gt;'dd mon yy'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;union all&lt;br /&gt;select&lt;/span&gt; @d,&lt;span style="color: rgb(204, 51, 204);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(51, 102, 255);"&gt;varchar&lt;/span&gt;,@d,107),107,&lt;span style="color: rgb(255, 0, 0);"&gt;'Mon dd, yy'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;union all&lt;br /&gt;select&lt;/span&gt; @d,&lt;span style="color: rgb(204, 51, 204);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(51, 102, 255);"&gt;varchar&lt;/span&gt;,@d,108),108,&lt;span style="color: rgb(255, 0, 0);"&gt;'hh:mm:ss'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;union all&lt;br /&gt;select&lt;/span&gt; @d,&lt;span style="color: rgb(204, 51, 204);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(51, 102, 255);"&gt;varchar&lt;/span&gt;,@d,109),109,&lt;span style="color: rgb(255, 0, 0);"&gt;'mon dd yyyy hh:mi:ss:mmmAM (or PM)'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;union all&lt;br /&gt;select&lt;/span&gt; @d,&lt;span style="color: rgb(204, 51, 204);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(51, 102, 255);"&gt;varchar&lt;/span&gt;,@d,110),110,&lt;span style="color: rgb(255, 0, 0);"&gt;'mm-dd-yy'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;union all&lt;br /&gt;select&lt;/span&gt; @d,&lt;span style="color: rgb(204, 51, 204);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(51, 102, 255);"&gt;varchar&lt;/span&gt;,@d,111),111,&lt;span style="color: rgb(255, 0, 0);"&gt;'yy/mm/dd'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;union all&lt;br /&gt;select&lt;/span&gt; @d,&lt;span style="color: rgb(204, 51, 204);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(51, 102, 255);"&gt;varchar&lt;/span&gt;,@d,112),112,&lt;span style="color: rgb(255, 0, 0);"&gt;'yymmdd'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;union all&lt;br /&gt;select&lt;/span&gt; @d,&lt;span style="color: rgb(204, 51, 204);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(51, 102, 255);"&gt;varchar&lt;/span&gt;,@d,113),113,&lt;span style="color: rgb(255, 0, 0);"&gt;'dd mon yyyy hh:mm:ss:mmm(24h)'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;union all&lt;br /&gt;select&lt;/span&gt; @d,&lt;span style="color: rgb(204, 51, 204);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(51, 102, 255);"&gt;varchar&lt;/span&gt;,@d,114),114,&lt;span style="color: rgb(255, 0, 0);"&gt;'hh:mi:ss:mmm(24h)'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;union all&lt;br /&gt;select&lt;/span&gt; @d,&lt;span style="color: rgb(204, 51, 204);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(51, 102, 255);"&gt;varchar&lt;/span&gt;,@d,120),120,&lt;span style="color: rgb(255, 0, 0);"&gt;'yyyy-mm-dd hh:mi:ss(24h)'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;union all&lt;br /&gt;select&lt;/span&gt; @d,&lt;span style="color: rgb(204, 51, 204);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(51, 102, 255);"&gt;varchar&lt;/span&gt;,@d,121),121,&lt;span style="color: rgb(255, 0, 0);"&gt;'yyyy-mm-dd hh:mi:ss.mmm(24h)'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;union all&lt;br /&gt;select&lt;/span&gt; @d,&lt;span style="color: rgb(204, 51, 204);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(51, 102, 255);"&gt;varchar&lt;/span&gt;,@d,126),126,&lt;span style="color: rgb(255, 0, 0);"&gt;'yyyy-mm-dd Thh:mm:ss:mmm(no spaces)'&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-6197800574606431363?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/6197800574606431363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=6197800574606431363' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/6197800574606431363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/6197800574606431363'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/date-formatting-in-sql-server.html' title='Date formatting in SQL Server'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-139251368264311773</id><published>2008-03-29T11:24:00.001-07:00</published><updated>2008-03-29T11:24:24.672-07:00</updated><title type='text'>SQL:Format Data From Numberformat To Timeformat</title><content type='html'>Sometimes you have data that's in a number format and you need to show it in a time format. Instead of 2.25 you need to show 02:15&lt;br /&gt;In that case you can use a combination of CONVERT and DATEADD&lt;br /&gt;Run the examples below to see how it works&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;DECLARE&lt;/span&gt; @a &lt;span style="color: rgb(51, 51, 255);"&gt;DECIMAL&lt;/span&gt;(6,2)&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; @a = 3.00&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; @a &lt;span style="color: rgb(51, 51, 255);"&gt;AS&lt;/span&gt; OldValue,&lt;br /&gt;&lt;span style="color: rgb(204, 51, 204);"&gt;CONVERT&lt;/span&gt;(&lt;span style="color: rgb(51, 51, 255);"&gt;CHAR&lt;/span&gt;(5), &lt;span style="color: rgb(204, 51, 204);"&gt;DATEADD&lt;/span&gt;(ss, @a * 3600, 0), 108) &lt;span style="color: rgb(51, 51, 255);"&gt;AS&lt;/span&gt; TimeFormatted&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; @a = 3.15&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; @a &lt;span style="color: rgb(51, 51, 255);"&gt;AS&lt;/span&gt; OldValue,&lt;br /&gt;&lt;span style="color: rgb(204, 51, 204);"&gt;CONVERT&lt;/span&gt;(&lt;span style="color: rgb(51, 51, 255);"&gt;CHAR&lt;/span&gt;(5), &lt;span style="color: rgb(204, 51, 204);"&gt;DATEADD&lt;/span&gt;(ss, @a * 3600, 0), 108) &lt;span style="color: rgb(51, 51, 255);"&gt;AS&lt;/span&gt; TimeFormatted&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; @a = 3.25&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; @a &lt;span style="color: rgb(51, 51, 255);"&gt;AS&lt;/span&gt; OldValue,&lt;br /&gt;&lt;span style="color: rgb(204, 51, 204);"&gt;CONVERT&lt;/span&gt;(&lt;span style="color: rgb(51, 51, 255);"&gt;CHAR&lt;/span&gt;(5), &lt;span style="color: rgb(204, 51, 204);"&gt;DATEADD&lt;/span&gt;(ss, @a * 3600, 0), 108) &lt;span style="color: rgb(51, 51, 255);"&gt;AS&lt;/span&gt; TimeFormatted&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; @a = 3.75&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; @a &lt;span style="color: rgb(51, 51, 255);"&gt;AS&lt;/span&gt; OldValue,&lt;br /&gt;&lt;span style="color: rgb(204, 51, 204);"&gt;CONVERT&lt;/span&gt;(&lt;span style="color: rgb(51, 51, 255);"&gt;CHAR&lt;/span&gt;(5), &lt;span style="color: rgb(204, 51, 204);"&gt;DATEADD&lt;/span&gt;(ss, @a * 3600, 0), 108) &lt;span style="color: rgb(51, 51, 255);"&gt;AS&lt;/span&gt; TimeFormatted&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-139251368264311773?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/139251368264311773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=139251368264311773' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/139251368264311773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/139251368264311773'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/sqlformat-data-from-numberformat-to.html' title='SQL:Format Data From Numberformat To Timeformat'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-8955275335820943373</id><published>2008-03-29T11:22:00.000-07:00</published><updated>2008-03-29T11:23:04.591-07:00</updated><title type='text'>Check If Temporary Table Exists</title><content type='html'>How do you check if a temp table exists?&lt;br /&gt;You can use IF OBJECT_ID('tempdb..#temp') IS NOT NULL&lt;br /&gt;Let's see how it works&lt;br /&gt;&lt;br /&gt;--Create table&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;USE&lt;/span&gt; Norhtwind&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;GO&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;CREATE TABLE&lt;/span&gt; #temp(id &lt;span style="color: rgb(51, 51, 255);"&gt;INT&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--Check if it exists&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;IF&lt;/span&gt; &lt;span style="color: rgb(204, 51, 204);"&gt;OBJECT_ID&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;'tempdb..#temp'&lt;/span&gt;) &lt;span style="color: rgb(51, 51, 255);"&gt;IS&lt;/span&gt; NOT NULL&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;PRINT&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'#temp exists!'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;END&lt;br /&gt;ELSE&lt;br /&gt;BEGIN&lt;br /&gt;PRINT&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; '#temp does not exist!'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;END&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--Another way to check with an undocumented optional second parameter&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;IF&lt;/span&gt; &lt;span style="color: rgb(204, 51, 204);"&gt;OBJECT_ID&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;'tempdb..#temp','u'&lt;/span&gt;) &lt;span style="color: rgb(51, 51, 255);"&gt;IS&lt;/span&gt; NOT NULL&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;PRINT&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'#temp exists!'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;END&lt;br /&gt;ELSE&lt;br /&gt;BEGIN&lt;br /&gt;PRINT&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; '#temp does not exist!'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;END&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--Don't do this because this checks the local DB and will return does not exist&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;IF&lt;/span&gt; &lt;span style="color: rgb(204, 51, 204);"&gt;OBJECT_ID&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;'tempdb..#temp','local'&lt;/span&gt;) &lt;span style="color: rgb(51, 51, 255);"&gt;IS&lt;/span&gt; NOT NULL&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;PRINT&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'#temp exists!'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;END&lt;br /&gt;ELSE&lt;br /&gt;BEGIN&lt;br /&gt;PRINT&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; '#temp does not exist!'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;END&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--unless you do something like this&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;USE&lt;/span&gt; tempdb&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--Now it exists again&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;IF&lt;/span&gt; &lt;span style="color: rgb(204, 51, 204);"&gt;OBJECT_ID&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;'tempdb..#temp','local'&lt;/span&gt;) &lt;span style="color: rgb(51, 51, 255);"&gt;IS&lt;/span&gt; NOT NULL&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;PRINT&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'#temp exists!'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;END&lt;br /&gt;ELSE&lt;br /&gt;BEGIN&lt;br /&gt;PRINT&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; '#temp does not exist!'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;END&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--let's go back to Norhtwind again&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;USE&lt;/span&gt; Norhtwind&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--Check if it exists&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;IF&lt;/span&gt; &lt;span style="color: rgb(204, 51, 204);"&gt;OBJECT_ID&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;'tempdb..#temp'&lt;/span&gt;) &lt;span style="color: rgb(51, 51, 255);"&gt;IS&lt;/span&gt; NOT NULL&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;PRINT&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'#temp exists!'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;END&lt;br /&gt;ELSE&lt;br /&gt;BEGIN&lt;br /&gt;PRINT&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; '#temp does not exist!'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;END&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;now open a new window from Query Analyzer (CTRL + N) and run this code again&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--Check if it exists&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;IF&lt;/span&gt; &lt;span style="color: rgb(204, 51, 204);"&gt;OBJECT_ID&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;'tempdb..#temp'&lt;/span&gt;) &lt;span style="color: rgb(51, 51, 255);"&gt;IS&lt;/span&gt; NOT NULL&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;PRINT&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'#temp exists!'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;END&lt;br /&gt;ELSE&lt;br /&gt;BEGIN&lt;br /&gt;PRINT&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; '#temp does not exist!'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;END&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It doesn't exist and that is correct since it's a local temp table not a global temp table&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Well let's test that statement&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--create a global temp table&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;CREATE TABLE&lt;/span&gt; ##temp(id &lt;span style="color: rgb(51, 51, 255);"&gt;INT&lt;/span&gt;) &lt;span style="color: rgb(0, 153, 0);"&gt;--Notice the 2 pound signs, that's how you create a global variable&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--Check if it exists&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;IF&lt;/span&gt; &lt;span style="color: rgb(204, 51, 204);"&gt;OBJECT_ID&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;'tempdb..##temp'&lt;/span&gt;) &lt;span style="color: rgb(51, 51, 255);"&gt;IS&lt;/span&gt; NOT NULL&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;PRINT&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'##temp exists!'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;END&lt;br /&gt;ELSE&lt;br /&gt;BEGIN&lt;br /&gt;PRINT&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; '##temp does not exist!'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;END&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It exists, right?&lt;br /&gt;Now run the same code in a new Query Analyzer window (CTRL + N)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--Check if it exists&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;IF&lt;/span&gt; &lt;span style="color: rgb(204, 51, 204);"&gt;OBJECT_ID&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;'tempdb..##temp'&lt;/span&gt;) &lt;span style="color: rgb(51, 51, 255);"&gt;IS&lt;/span&gt; NOT NULL&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;PRINT&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'##temp exists!'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;END&lt;br /&gt;ELSE&lt;br /&gt;BEGIN&lt;br /&gt;PRINT&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; '##temp does not exist!'&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;END&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And yes this time it does exist since it's a global table&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-8955275335820943373?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/8955275335820943373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=8955275335820943373' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/8955275335820943373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/8955275335820943373'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/check-if-temporary-table-exists.html' title='Check If Temporary Table Exists'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-8601018979667234437</id><published>2008-03-29T11:20:00.000-07:00</published><updated>2008-03-29T11:21:16.517-07:00</updated><title type='text'>Sort A SQL Server Table With CASE Or CHARINDEX</title><content type='html'>Let's say you have a table with states in your database, you only have 3 values NY, ME and SC.&lt;br /&gt;You want to order the result like this: first NY followed by SC and ME last.&lt;br /&gt;You can do that in two different ways&lt;br /&gt;One: use a case statement in your order by&lt;br /&gt;Two: use Charindex in your order by&lt;br /&gt;Let's see how that works&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;CREATE TABLE&lt;/span&gt; #TEST (&lt;br /&gt;STATE &lt;span style="color: rgb(51, 51, 255);"&gt;CHAR&lt;/span&gt;(2))&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;INSERT INTO&lt;/span&gt; #TEST&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'ME'&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;UNION&lt;/span&gt; ALL&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'ME'&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;UNION&lt;/span&gt; ALL&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; 'ME'&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;UNION&lt;/span&gt; ALL&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'SC' &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;UNION&lt;/span&gt; ALL&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'NY' &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;UNION&lt;/span&gt; ALL&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'SC'&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;UNION&lt;/span&gt; ALL&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'NY' &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;UNION&lt;/span&gt; ALL&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'SC'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;-- order by using CASE&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; *&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;FROM&lt;/span&gt; #TEST&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;ORDER BY&lt;/span&gt; &lt;span style="color: rgb(204, 51, 204);"&gt;CASE&lt;/span&gt; STATE&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;WHEN&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'NY'&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;THEN&lt;/span&gt; 1&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;WHEN&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'SC' &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;THEN&lt;/span&gt; 2&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;ELSE&lt;/span&gt; 3&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;END&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--Order by using CHARINDEX&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; *&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;FROM&lt;/span&gt; #TEST&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;ORDER BY&lt;/span&gt; &lt;span style="color: rgb(204, 51, 204);"&gt;CHARINDEX&lt;/span&gt;(STATE,&lt;span style="color: rgb(255, 0, 0);"&gt;'NY-SC-ME'&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--or without NY since CHARINDEX will return 0 for NY and it will be first&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; *&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;FROM&lt;/span&gt; #TEST&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;ORDER BY&lt;/span&gt; &lt;span style="color: rgb(204, 51, 204);"&gt;CHARINDEX&lt;/span&gt;(STATE,&lt;span style="color: rgb(255, 0, 0);"&gt;'SC-ME'&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--the problem is of course if you have more values and you only want to have NY and SC showing up first and second&lt;br /&gt;--let's insert 2 more rows&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;INSERT INTO&lt;/span&gt; #TEST&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'IL'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;UNION&lt;/span&gt; ALL&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'CA'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;-- Now the CHARINDEX Order doesn't work&lt;br /&gt;-- the trick is to make it Descending and switch the states around&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; *&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;FROM&lt;/span&gt; #TEST&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;ORDER BY&lt;/span&gt; &lt;span style="color: rgb(204, 51, 204);"&gt;CHARINDEX&lt;/span&gt;(STATE,&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;'SC&lt;/span&gt;-NY'&lt;/span&gt;) &lt;span style="color: rgb(51, 51, 255);"&gt;DESC&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;or this way&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--Order by using CHARINDEX DESC&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; *&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;FROM&lt;/span&gt; #TEST&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;ORDER BY&lt;/span&gt; &lt;span style="color: rgb(204, 51, 204);"&gt;CHARINDEX&lt;/span&gt;(STATE,&lt;span style="color: rgb(255, 0, 0);"&gt;'ME-SC-NY'&lt;/span&gt;) &lt;span style="color: rgb(51, 51, 255);"&gt;DESC&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-8601018979667234437?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/8601018979667234437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=8601018979667234437' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/8601018979667234437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/8601018979667234437'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/sort-sql-server-table-with-case-or.html' title='Sort A SQL Server Table With CASE Or CHARINDEX'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-7964245607190414102</id><published>2008-03-29T11:18:00.000-07:00</published><updated>2008-03-29T11:19:32.963-07:00</updated><title type='text'>COALESCE And ISNULL Differences</title><content type='html'>Run the following block of code&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;-- The result is 7, integer math&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; 15 / &lt;span style="color: rgb(204, 51, 204);"&gt;ISNULL&lt;/span&gt;(&lt;span style="color: rgb(204, 51, 204);"&gt;CONVERT&lt;/span&gt;(&lt;span style="color: rgb(51, 51, 255);"&gt;INT&lt;/span&gt;,NULL), 2.00)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--The result is 7.5, which is correct&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; 15 / &lt;span style="color: rgb(204, 51, 204);"&gt;COALESCE&lt;/span&gt;(&lt;span style="color: rgb(204, 51, 204);"&gt;CONVERT&lt;/span&gt;(&lt;span style="color: rgb(51, 51, 255);"&gt;INT&lt;/span&gt;,NULL), 2.00)&lt;br /&gt;&lt;br /&gt;You will see that the result is not the same ISNULL does integer math while COALESCE does not&lt;br /&gt;&lt;br /&gt;COALESCE correctly promotes its arguments to the highest data type in the expression list.&lt;br /&gt;ISNULL just looks at the first datatype, which is an integer (15) and makes everything an int&lt;br /&gt;COALESCE looks at 2.00 and 15 and then promotes the integer to decimal&lt;br /&gt;&lt;br /&gt;Another example is returning the first non null value, ISNULL can only take 2 values while COALESCE can take a whole lot more&lt;br /&gt;Here we have 4 variables and all except for one are null&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;DECLARE&lt;/span&gt; @Var1 &lt;span style="color: rgb(51, 51, 255);"&gt;VARCHAR&lt;/span&gt;(20)&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;DECLARE&lt;/span&gt; @Var2 &lt;span style="color: rgb(51, 51, 255);"&gt;VARCHAR&lt;/span&gt;(20)&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;DECLARE&lt;/span&gt; @Var3 &lt;span style="color: rgb(51, 51, 255);"&gt;VARCHAR&lt;/span&gt;(20)&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;DECLARE&lt;/span&gt; @Var4 &lt;span style="color: rgb(51, 51, 255);"&gt;VARCHAR&lt;/span&gt;(20)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; @Var4 = &lt;span style="color: rgb(255, 0, 0);"&gt;'ABC'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--This will return ABC&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; &lt;span style="color: rgb(204, 51, 204);"&gt;COALESCE&lt;/span&gt;(@Var1,@Var2,@Var3,@Var4)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-7964245607190414102?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/7964245607190414102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=7964245607190414102' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/7964245607190414102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/7964245607190414102'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/coalesce-and-isnull-differences.html' title='COALESCE And ISNULL Differences'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-2668672706214358481</id><published>2008-03-29T11:16:00.000-07:00</published><updated>2008-03-29T11:17:44.345-07:00</updated><title type='text'>How To Split column In SQL</title><content type='html'>Suppose  you  have a column in a table that has multiple pieces of information in it that&lt;br /&gt;I need to break out into various columns. The column is random but the&lt;br /&gt;values I need to separate out are the number and the UN number as below:&lt;br /&gt;&lt;br /&gt;245 HELIUM, COMPRESSED 2.2 UN1046&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I need to separate the 2.2 and the UN1046 into different columns. How do I&lt;br /&gt;parse this?&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;CREATE TABLE&lt;/span&gt; Inventory (ItemDescription &lt;span style="color: rgb(51, 51, 255);"&gt;VARCHAR&lt;/span&gt;(99))&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;INSERT&lt;/span&gt; Inventory &lt;span style="color: rgb(51, 51, 255);"&gt;VALUES&lt;/span&gt; (&lt;span style="color: rgb(255, 0, 0);"&gt;'245 HELIUM, COMPRESSED 2.2 UN1046'&lt;/span&gt; )&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;INSERT&lt;/span&gt; Inventory &lt;span style="color: rgb(51, 51, 255);"&gt;VALUES&lt;/span&gt; (&lt;span style="color: rgb(255, 0, 0);"&gt;'24adada5 HELIsadasdadUM, sdsdsd 6.6 UN99'&lt;/span&gt; )&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;INSERT&lt;/span&gt; Inventory &lt;span style="color: rgb(51, 51, 255);"&gt;VALUES&lt;/span&gt; (&lt;span style="color: rgb(255, 0, 0);"&gt;'24adada5 HELIsadasdadUM, sdsdsd 446.6777 UN9988888'&lt;/span&gt; )&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;INSERT&lt;/span&gt; Inventory &lt;span style="color: rgb(51, 51, 255);"&gt;VALUES&lt;/span&gt; (&lt;span style="color: rgb(255, 0, 0);"&gt;'24adada5 HEdUM, sdsdsd 446.0 UN9988'&lt;/span&gt; )&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; &lt;span style="color: rgb(204, 51, 204);"&gt;RIGHT&lt;/span&gt;(ItemDescription,&lt;span style="color: rgb(204, 51, 204);"&gt;PATINDEX&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;'% %'&lt;/span&gt;,&lt;br /&gt;&lt;span style="color: rgb(204, 51, 204);"&gt;REVERSE&lt;/span&gt;(ItemDescription))-1) &lt;span style="color: rgb(51, 51, 255);"&gt;AS&lt;/span&gt; COL1,&lt;br /&gt;&lt;span style="color: rgb(204, 51, 204);"&gt;LTRIM&lt;/span&gt;(&lt;span style="color: rgb(204, 51, 204);"&gt;REVERSE&lt;/span&gt;(&lt;span style="color: rgb(204, 51, 204);"&gt;LEFT&lt;/span&gt;(&lt;span style="color: rgb(204, 51, 204);"&gt;REVERSE&lt;/span&gt;(&lt;span style="color: rgb(204, 51, 204);"&gt;LEFT&lt;/span&gt;(ItemDescription,(&lt;span style="color: rgb(204, 51, 204);"&gt;LEN&lt;/span&gt;(ItemDescription)-&lt;span style="color: rgb(204, 51, 204);"&gt;PATINDEX&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;'% %'&lt;/span&gt;, &lt;span style="color: rgb(204, 51, 204);"&gt;REVERSE&lt;/span&gt;(ItemDescription))))),&lt;br /&gt;&lt;span style="color: rgb(204, 51, 204);"&gt;PATINDEX&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;'% %'&lt;/span&gt;,&lt;span style="color: rgb(204, 51, 204);"&gt;REVERSE&lt;/span&gt;(&lt;span style="color: rgb(204, 51, 204);"&gt;LEFT&lt;/span&gt;(ItemDescription,(&lt;span style="color: rgb(204, 51, 204);"&gt;LEN&lt;/span&gt;(ItemDescription)-&lt;span style="color: rgb(204, 51, 204);"&gt;PATINDEX&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;'% %'&lt;/span&gt;, &lt;span style="color: rgb(204, 51, 204);"&gt;REVERSE&lt;/span&gt;(ItemDescription)))))))))&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;AS&lt;/span&gt; COL2&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;FROM&lt;/span&gt; Inventory&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-2668672706214358481?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/2668672706214358481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=2668672706214358481' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/2668672706214358481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/2668672706214358481'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/how-to-split-column-in-sql.html' title='How To Split column In SQL'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-4567423180890469443</id><published>2008-03-29T11:06:00.000-07:00</published><updated>2008-03-29T11:07:33.879-07:00</updated><title type='text'>Formatting Data By Using CHARINDEX And SUBSTRING</title><content type='html'>Let's say you have names stored in the format [XYZ, ABC] but would like it to be [ABC XYZ]&lt;br /&gt;How do you accomplish that in SQL?&lt;br /&gt;SQL provides 2 useful functions (CHARINDEX And SUBSTRING)&lt;br /&gt;Run the code below to see how they work&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;CREATE TABLE&lt;/span&gt; Names (ID &lt;span style="color: rgb(51, 102, 255);"&gt;INT&lt;/span&gt; identity not null,NameField &lt;span style="color: rgb(51, 102, 255);"&gt;VARCHAR&lt;/span&gt;(50), ProperNameField &lt;span style="color: rgb(51, 102, 255);"&gt;VARCHAR&lt;/span&gt;(50))&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;INSERT INTO&lt;/span&gt; Names&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;SELECT&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'XYZ, ABC&lt;/span&gt;',NULL&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;UNION&lt;/span&gt; ALL&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;SELECT&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'Smith, John'&lt;/span&gt;,NULL&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;UNION&lt;/span&gt; ALL&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;SELECT&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'Jackson, Michael'&lt;/span&gt;,NULL&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;UNION&lt;/span&gt; ALL&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;SELECT&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'Gates, Bill'&lt;/span&gt;,NULL&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;UPDATE&lt;/span&gt; Names&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;SET&lt;/span&gt; ProperNameField =&lt;span style="color: rgb(204, 51, 204);"&gt;SUBSTRING&lt;/span&gt;(NameField,&lt;span style="color: rgb(204, 51, 204);"&gt;CHARINDEX&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;','&lt;/span&gt;,NameField) + 2,&lt;br /&gt;                       &lt;span style="color: rgb(204, 51, 204);"&gt;LEN&lt;/span&gt;(NameField) - &lt;span style="color: rgb(204, 51, 204);"&gt;CHARINDEX&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;','&lt;/span&gt;,NameField))&lt;br /&gt;                       + &lt;span style="color: rgb(255, 0, 0);"&gt;' '&lt;/span&gt; + &lt;span style="color: rgb(204, 51, 204);"&gt;LEFT&lt;/span&gt;(NameField,&lt;span style="color: rgb(204, 51, 204);"&gt;CHARINDEX&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;','&lt;/span&gt;,NameField)-1)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;SELECT&lt;/span&gt; * &lt;span style="color: rgb(51, 102, 255);"&gt;FROM&lt;/span&gt; Names&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-4567423180890469443?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/4567423180890469443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=4567423180890469443' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/4567423180890469443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/4567423180890469443'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/formatting-data-by-using-charindex-and.html' title='Formatting Data By Using CHARINDEX And SUBSTRING'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-4448071443239265395</id><published>2008-03-29T11:03:00.000-07:00</published><updated>2008-03-29T11:04:28.235-07:00</updated><title type='text'>Pad Numbers By Using CASE, LEFT And CONVERT</title><content type='html'>&lt;span style="color: rgb(0, 0, 0);"&gt;Let's say you have a table with integer values below 100000 and you want them in the same format with leading zeros. For example 500 has to be 000500 and 1 has to be 000001&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;How do you do this in SQL server?&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Below are two ways to accomplish this.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;CREATE TABLE&lt;/span&gt; #ValueTable (value INT)&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;INSERT INTO&lt;/span&gt; #ValueTable&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;SELECT&lt;/span&gt; 1&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;UNION&lt;/span&gt; ALL&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;SELECT&lt;/span&gt; 500&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;UNION&lt;/span&gt; ALL&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;SELECT&lt;/span&gt; 4000&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;UNION&lt;/span&gt; ALL&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;SELECT&lt;/span&gt; 50000&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;--Use CASE, LEN and CONVERT to pad the values&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;SELECT&lt;/span&gt; value,&lt;span style="color: rgb(204, 51, 204);"&gt;CASE&lt;/span&gt; &lt;span style="color: rgb(204, 51, 204);"&gt;LEN&lt;/span&gt;(value)&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;WHEN&lt;/span&gt; 1 &lt;span style="color: rgb(51, 102, 255);"&gt;THEN&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'00000'&lt;/span&gt; + &lt;span style="color: rgb(204, 51, 204);"&gt;CONVERT&lt;/span&gt;(&lt;span style="color: rgb(51, 102, 255);"&gt;VARCHAR&lt;/span&gt;,value)&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;WHEN&lt;/span&gt; 2 &lt;span style="color: rgb(51, 102, 255);"&gt;THEN&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'0000'&lt;/span&gt; + &lt;span style="color: rgb(204, 51, 204);"&gt;CONVERT&lt;/span&gt;(&lt;span style="color: rgb(51, 102, 255);"&gt;VARCHAR&lt;/span&gt;,value)&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;WHEN&lt;/span&gt; 3 &lt;span style="color: rgb(51, 102, 255);"&gt;THEN&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'000'&lt;/span&gt; + &lt;span style="color: rgb(204, 51, 204);"&gt;CONVERT&lt;/span&gt;(&lt;span style="color: rgb(51, 102, 255);"&gt;VARCHAR&lt;/span&gt;,value)&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;WHEN&lt;/span&gt; 4 &lt;span style="color: rgb(51, 102, 255);"&gt;THEN&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'00'&lt;/span&gt; + &lt;span style="color: rgb(204, 51, 204);"&gt;CONVERT&lt;/span&gt;(&lt;span style="color: rgb(51, 102, 255);"&gt;VARCHAR&lt;/span&gt;,value)&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;WHEN&lt;/span&gt; 5 &lt;span style="color: rgb(51, 102, 255);"&gt;THEN&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'0'&lt;/span&gt; + &lt;span style="color: rgb(204, 51, 204);"&gt;CONVERT&lt;/span&gt;(&lt;span style="color: rgb(51, 102, 255);"&gt;VARCHAR&lt;/span&gt;,value)&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;ELSE&lt;/span&gt; &lt;span style="color: rgb(204, 51, 204);"&gt;CONVERT&lt;/span&gt;(&lt;span style="color: rgb(51, 102, 255);"&gt;VARCHAR&lt;/span&gt;,value)&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;END AS&lt;/span&gt; Formattedvalue&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;FROM&lt;/span&gt; #ValueTable&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;--Use LEFT, LEN and CONVERT to pad the values&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;SELECT&lt;/span&gt; value,&lt;span style="color: rgb(204, 51, 204);"&gt;LEFT&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;'000000'&lt;/span&gt;,(6 -&lt;span style="color: rgb(204, 51, 204);"&gt;LEN&lt;/span&gt;(value )))&lt;br /&gt;+ &lt;span style="color: rgb(204, 51, 204);"&gt;CONVERT&lt;/span&gt;(&lt;span style="color: rgb(51, 102, 255);"&gt;VARCHAR&lt;/span&gt;,value) &lt;span style="color: rgb(51, 102, 255);"&gt;AS&lt;/span&gt; Formattedvalue&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;FROM&lt;/span&gt; #ValueTable&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-4448071443239265395?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/4448071443239265395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=4448071443239265395' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/4448071443239265395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/4448071443239265395'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/pad-numbers-by-using-case-left-and.html' title='Pad Numbers By Using CASE, LEFT And CONVERT'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-4390305353723565184</id><published>2008-03-29T11:01:00.000-07:00</published><updated>2008-03-29T11:02:18.775-07:00</updated><title type='text'>Find all Primary and Foreign Keys In A Database</title><content type='html'>To find all your foreign and primary keys in your database run the code below.&lt;br /&gt;The ouput will return the primary key, primary key table, foreign key, foreign key table. Primary keys that don't have foreign keys will have N/A in the foreign key output&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;USE&lt;/span&gt; Northwind&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; tc.TABLE_NAME AS PrimaryKeyTable,&lt;br /&gt;tc.CONSTRAINT_NAME AS PrimaryKey,&lt;br /&gt;&lt;span style="color: rgb(204, 51, 204);"&gt;COALESCE&lt;/span&gt;(rc1.CONSTRAINT_NAME,&lt;span style="color: rgb(255, 0, 0);"&gt;'N/A'&lt;/span&gt;) &lt;span style="color: rgb(51, 51, 255);"&gt;AS&lt;/span&gt; ForeignKey ,&lt;br /&gt;&lt;span style="color: rgb(204, 51, 204);"&gt;COALESCE&lt;/span&gt;(tc2.TABLE_NAME,&lt;span style="color: rgb(255, 0, 0);"&gt;'N/A'&lt;/span&gt;) &lt;span style="color: rgb(51, 51, 255);"&gt;AS&lt;/span&gt; ForeignKeyTable&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;FROM&lt;/span&gt; INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc&lt;br /&gt;&lt;span style="color: rgb(204, 51, 204);"&gt;LEFT&lt;/span&gt; JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc1 ON tc.CONSTRAINT_NAME =rc1.UNIQUE_CONSTRAINT_NAME&lt;br /&gt;&lt;span style="color: rgb(204, 51, 204);"&gt;LEFT&lt;/span&gt; JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc2 ON tc2.CONSTRAINT_NAME =rc1.CONSTRAINT_NAME&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;WHERE&lt;/span&gt; TC.CONSTRAINT_TYPE ='PRIMARY KEY'&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;ORDER BY&lt;/span&gt; tc.TABLE_NAME,tc.CONSTRAINT_NAME,rc1.CONSTRAINT_NAME&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-4390305353723565184?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/4390305353723565184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=4390305353723565184' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/4390305353723565184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/4390305353723565184'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/find-all-primary-and-foreign-keys-in.html' title='Find all Primary and Foreign Keys In A Database'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-5874035245464884532</id><published>2008-03-29T10:58:00.000-07:00</published><updated>2008-03-29T10:59:16.411-07:00</updated><title type='text'>Use OBJECTPROPERTY To Find Out Table Properties</title><content type='html'>How many times did you open up a table in design view to find out if a table has&lt;br /&gt;a delete trigger&lt;br /&gt;a clustered index&lt;br /&gt;an identity column&lt;br /&gt;a primary key&lt;br /&gt;a timestamp&lt;br /&gt;a unique constraint&lt;br /&gt;etc etc?&lt;br /&gt;&lt;br /&gt;There is an easier way to find out all this info by using the &lt;strong&gt;OBJECTPROPERTY&lt;/strong&gt; function&lt;br /&gt;You will have to get the object id from the table to pass it into the &lt;strong&gt;OBJECTPROPERTY&lt;/strong&gt; function.&lt;br /&gt;To get the object id you can use the &lt;strong&gt;OBJECT_ID&lt;/strong&gt; function.&lt;br /&gt;Run the code below in the Northwind database to see how it works&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;USE&lt;/span&gt; Northwind&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;DECLARE&lt;/span&gt; @objectID &lt;span style="color: rgb(51, 51, 255);"&gt;INT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; @objectID =&lt;span style="color: rgb(204, 51, 204);"&gt;OBJECT_ID&lt;/span&gt;('customers')&lt;br /&gt;&lt;br /&gt;select &lt;span style="color: rgb(204, 51, 204);"&gt;OBJECTPROPERTY&lt;/span&gt;(@objectID,&lt;span style="color: rgb(255, 0, 0);"&gt;'TableDeleteTrigger'&lt;/span&gt;) &lt;span style="color: rgb(51, 102, 255);"&gt;AS&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'Table Has A Delete Trigger'&lt;/span&gt;,&lt;br /&gt;&lt;span style="color: rgb(204, 51, 204);"&gt;OBJECTPROPERTY&lt;/span&gt;(@objectID,&lt;span style="color: rgb(255, 0, 0);"&gt;'TableHasClustIndex'&lt;/span&gt;) &lt;span style="color: rgb(51, 102, 255);"&gt;AS&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'Table Has A Clustered Index'&lt;/span&gt;,&lt;br /&gt;&lt;span style="color: rgb(204, 51, 204);"&gt;OBJECTPROPERTY&lt;/span&gt;(@objectID,&lt;span style="color: rgb(255, 0, 0);"&gt;'TableHasIdentity'&lt;/span&gt;) &lt;span style="color: rgb(51, 102, 255);"&gt;AS&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'Table Has An Identity Column'&lt;/span&gt;,&lt;br /&gt;&lt;span style="color: rgb(204, 51, 204);"&gt;OBJECTPROPERTY&lt;/span&gt;(@objectID,&lt;span style="color: rgb(255, 0, 0);"&gt;'TableHasPrimaryKey'&lt;/span&gt;) &lt;span style="color: rgb(51, 102, 255);"&gt;AS&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'Table Has A Primary Key'&lt;/span&gt;,&lt;br /&gt;&lt;span style="color: rgb(204, 51, 204);"&gt;OBJECTPROPERTY&lt;/span&gt;(@objectID,&lt;span style="color: rgb(255, 0, 0);"&gt;'TableHasTimestamp'&lt;/span&gt;) &lt;span style="color: rgb(51, 102, 255);"&gt;AS&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'Table Has A Timestamp'&lt;/span&gt;,&lt;br /&gt;&lt;span style="color: rgb(204, 51, 204);"&gt;OBJECTPROPERTY&lt;/span&gt;(@objectID,&lt;span style="color: rgb(255, 0, 0);"&gt;'TableHasUniqueCnst'&lt;/span&gt;) &lt;span style="color: rgb(51, 102, 255);"&gt;AS&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'Table Has A Unique Constraint'&lt;/span&gt;,&lt;br /&gt;&lt;span style="color: rgb(204, 51, 204);"&gt;OBJECTPROPERTY&lt;/span&gt;(@objectID,&lt;span style="color: rgb(255, 0, 0);"&gt;'IsAnsiNullsOn'&lt;/span&gt;) &lt;span style="color: rgb(51, 102, 255);"&gt;AS&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'ANSI NULLS Is Set To ON'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lookup &lt;strong&gt;OBJECTPROPERTY&lt;/strong&gt; in Books On Line to find out about additional properties&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-5874035245464884532?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/5874035245464884532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=5874035245464884532' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/5874035245464884532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/5874035245464884532'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/use-objectproperty-to-find-out-table.html' title='Use OBJECTPROPERTY To Find Out Table Properties'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-1743275698873012460</id><published>2008-03-29T10:48:00.000-07:00</published><updated>2008-03-29T10:49:04.017-07:00</updated><title type='text'>SQL String Functions Tutorial</title><content type='html'>&lt;p&gt; &lt;strong&gt;1. CHARINDEX&lt;/strong&gt; string function takes 2 arguments. 1st argument specifies the character whose index is to be retrieved and 2nd argument takes as a string from which character index is carried out. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Example:&lt;br /&gt;Select CHARINDEX ('S','MICROSOFT SQL SERVER 2000')&lt;br /&gt;Result: 6&lt;/strong&gt;  &lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;strong&gt;2. LEFT&lt;/strong&gt; string function takes 2 arguments. 1st argument takes as a string value and 2nd argument as integer value as length parameter. It returns first characters of specified length starting from the left side of the string entered as 1st argument. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Example:&lt;br /&gt;Select LEFT ('MICROSOFT SQL SERVER 2000',4)&lt;br /&gt;Result: MICR&lt;/strong&gt;  &lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;strong&gt;3. RIGHT&lt;/strong&gt; string function takes 2 arguments. 1st argument takes as a string value and 2nd argument as integer value as length parameter. It returns last characters of specified length starting from the right side of the string entered as 1st argument. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Example:&lt;br /&gt;Select RIGHT ('MICROSOFT SQL SERVER 2000',4)&lt;br /&gt;Result: 2000&lt;/strong&gt;  &lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;strong&gt;4. LEN&lt;/strong&gt; string function takes 1 argument as string value and returns the length of entered string.  &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Example:&lt;br /&gt;Select LEN ('MICROSOFT SQL SERVER 2000')&lt;br /&gt;Result: 25&lt;/strong&gt;  &lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;strong&gt;5. REPLACE&lt;/strong&gt; string function takes 3 arguments.&lt;br /&gt;1st argument as string value.&lt;br /&gt;2nd argument is a part of string entered as 1st argument which is to be replaced.&lt;br /&gt;3rd argument as a new string value that is to be placed at the place of 2nd argument.  &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Example:&lt;br /&gt;Select REPLACE ('MICROSOFT SQL SERVER 2000','MICROSOFT','MS')&lt;br /&gt;Result: MS SQL SERVER 2000&lt;/strong&gt;  &lt;/p&gt; &lt;p&gt;   &lt;/p&gt; &lt;p&gt;    &lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;strong&gt;6. STUFF&lt;/strong&gt; string function takes 4 arguments. It is used to replace specified length of characters with provided pattern.&lt;br /&gt;1st argument as string value.&lt;br /&gt;2nd argument as integer value specifying the starting point of characters to be replaced.&lt;br /&gt;3rd arguments as integer value specifying the length of characters.&lt;br /&gt;4th argument as string value specifying the new pattern of characters.  &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Example:&lt;br /&gt;Select STUFF ('MICROSOFT SQL SERVER 2000', 11, 3,'S.Q.L.')&lt;br /&gt;Result: MICROSFT S.Q.L. SERVER 2000&lt;/strong&gt;  &lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;strong&gt;7. SUBSTRING&lt;/strong&gt; string function returns the sub string of specified length starting from the entered start position. It takes 3 arguments.&lt;br /&gt;1st argument as string value.&lt;br /&gt;2nd argument as integer specifying the start position.&lt;br /&gt;3rd argument as integer specifying the length  &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Example:&lt;br /&gt;Select SUBSTRING ('MICROSOFT SQL SERVER 2000', 11, 3)&lt;br /&gt;Result: SQL&lt;/strong&gt;  &lt;/p&gt; &lt;p&gt; &lt;strong&gt;8. LOWER&lt;/strong&gt; string function returns the lower case string whether the entered string has upper case letters. It takes 1 argument as string value. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Example:&lt;br /&gt;select LOWER(‘MICROSOFT ASP .NET WEB HOSTING’)&lt;br /&gt;Result: microsoft asp .net web hosting&lt;/strong&gt;  &lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;strong&gt;9. UPPER&lt;/strong&gt; string function returns the upper case string whether the entered string has lower case letters. It takes 1 argument as string value. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Example:&lt;br /&gt;select LOWER(‘MICROSOFT ASP .NET WEB HOSTING with SQL Database’)&lt;br /&gt;Result: MICROSOFT ASP .NET WEB HOSTING WITH SQL DATABASE&lt;/strong&gt;  &lt;/p&gt; &lt;p&gt; &lt;strong&gt;10. REVERSE&lt;/strong&gt; string function returns the string in reverse order. It takes 1 argument as string value.  &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Example:&lt;br /&gt;select REVERSE(‘ASP.NET’)&lt;br /&gt;Result: TEN.PSA&lt;/strong&gt;  &lt;/p&gt; &lt;p&gt;   &lt;/p&gt; &lt;p&gt;    &lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;strong&gt;11. LTRIM&lt;/strong&gt; function returns the string by removing all the blank spaces at left side. It also takes 1 argument as string value.  &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Example:&lt;br /&gt;select LTRIM (‘    ASP     ’)&lt;br /&gt;Result: ASP-----&lt;br /&gt;blanks at the right side not removed.&lt;/strong&gt;  &lt;/p&gt; &lt;p&gt; &lt;strong&gt;12. RTRIM&lt;/strong&gt; function returns the string by removing all the blank spaces at left side. It also takes 1 argument as string value.  &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Example:&lt;br /&gt;select RTRIM (‘    ASP     ’)&lt;br /&gt;Result: -----ASP&lt;br /&gt;blanks at the left side not removed.&lt;/strong&gt;  &lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;strong&gt;13. PATINDEX&lt;/strong&gt; function returns the position of first occurrence of specified pattern in the provided string. It takes 2 arguments.&lt;br /&gt;1st argument as string value specifying the pattern to match&lt;br /&gt;2nd argument as string value specifying the string to compare.  &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Example:&lt;br /&gt;select PATINDEX('%RO%','MICROSOFT')&lt;br /&gt;Results: 4&lt;/strong&gt;  &lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;strong&gt;14. STR &lt;/strong&gt;function returns character data converted from numeric data. It takes 3 arguments.&lt;br /&gt;1st argument as float data&lt;br /&gt;2nd argument as integer value specifying the length of the string including decimal that is to be retrieved.&lt;br /&gt;3rd argument as integer specifying the number of places to the right of the decimal point.  &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Example:&lt;br /&gt;select STR(140.15, 6, 1)&lt;br /&gt;Result: 140.2&lt;/strong&gt;  &lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;strong&gt;15. ASCII &lt;/strong&gt;function returns the ASCII code value from the leftmost character specified character expression. It takes 1 argument as string/character expression. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Example:&lt;br /&gt;select ASCII('A')&lt;br /&gt;Result: 65&lt;/strong&gt;  &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-1743275698873012460?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/1743275698873012460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=1743275698873012460' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/1743275698873012460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/1743275698873012460'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/sql-string-functions-tutorial.html' title='SQL String Functions Tutorial'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-3296560278132731627</id><published>2008-03-29T10:47:00.000-07:00</published><updated>2008-03-29T10:48:20.817-07:00</updated><title type='text'>To Get The Current Identity Value From A Table</title><content type='html'>&lt;span style="color: rgb(0, 153, 0);"&gt;Let's first create our two simple tables&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;CREATE TABLE&lt;/span&gt; TestOne (id &lt;span style="color: rgb(51, 51, 255);"&gt;INT&lt;/span&gt; identity,SomeDate &lt;span style="color: rgb(51, 51, 255);"&gt;DATETIME&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;CREATE TABLE&lt;/span&gt; TestTwo (id &lt;span style="color: rgb(51, 51, 255);"&gt;INT&lt;/span&gt; identity,TestOneID &lt;span style="color: rgb(51, 51, 255);"&gt;INT&lt;/span&gt;,SomeDate &lt;span style="color: rgb(51, 51, 255);"&gt;DATETIME&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--Let's insert 4 rows into the table&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;INSERT&lt;/span&gt; TestOne &lt;span style="color: rgb(51, 51, 255);"&gt;VALUES&lt;/span&gt;(&lt;span style="color: rgb(204, 51, 204);"&gt;GETDATE&lt;/span&gt;())&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;INSERT&lt;/span&gt; TestOne &lt;span style="color: rgb(51, 51, 255);"&gt;VALUES&lt;/span&gt;(&lt;span style="color: rgb(204, 51, 204);"&gt;GETDATE&lt;/span&gt;())&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;INSERT&lt;/span&gt; TestOne &lt;span style="color: rgb(51, 51, 255);"&gt;VALUES&lt;/span&gt;(&lt;span style="color: rgb(204, 51, 204);"&gt;GETDATE&lt;/span&gt;())&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;INSERT&lt;/span&gt; TestOne &lt;span style="color: rgb(51, 51, 255);"&gt;VALUES&lt;/span&gt;(&lt;span style="color: rgb(204, 51, 204);"&gt;GETDATE&lt;/span&gt;())&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Here are diffrent ways to check for the current value&lt;/strong&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--1 @@IDENTITY&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; &lt;span style="color: rgb(204, 51, 204);"&gt;@@IDENTITY&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--this returns 4&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--2 DBCC CHECKIDENT&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;DBCC CHECKIDENT&lt;/span&gt; (TestOne, NORESEED)&lt;br /&gt;after running DBCC CHECKIDENT the message returned is&lt;br /&gt;Checking identity information: current identity value '4', current column value '4'.&lt;br /&gt;DBCC execution completed. If DBCC printed error messages, contact your system administrator.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--3 MAX function&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;MAX&lt;/span&gt;(id)&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;FROM&lt;/span&gt; TestOne&lt;br /&gt;you can also check with the MAX function but this is not recommended becuase you might get some other identity value that is not yours but from a different user&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--4 TOP 1 and ORDER BY DESC&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;TOP&lt;/span&gt; 1 id&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;FROM&lt;/span&gt; TestOne&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;ORDER BY&lt;/span&gt; id &lt;span style="color: rgb(51, 51, 255);"&gt;DESC&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--The same applies here as for the max function, this is not recommended&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--5 IDENT_CURRENT&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; &lt;span style="color: rgb(204, 51, 204);"&gt;IDENT_CURRENT&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;'TestOne'&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--IDENT_CURRENT is another way to check&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--6 SCOPE_IDENTITY&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; &lt;span style="color: rgb(204, 51, 204);"&gt;SCOPE_IDENTITY&lt;/span&gt;()&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--This one is very similar to @@IDENTITY with one BIG difference (shown later)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-3296560278132731627?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/3296560278132731627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=3296560278132731627' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/3296560278132731627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/3296560278132731627'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/to-get-current-identity-value-from.html' title='To Get The Current Identity Value From A Table'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-8497003220502389130</id><published>2008-03-29T10:45:00.000-07:00</published><updated>2008-03-29T10:46:21.441-07:00</updated><title type='text'>How To Delete a null record</title><content type='html'>The code below will show you how exactly you delete a row with a NULL value. You can not use =NULL but you have to use IS NULL&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;CREATE TABLE&lt;/span&gt; #TestDeleteNull (id &lt;span style="color: rgb(51, 51, 255);"&gt;INT&lt;/span&gt; identity, SomeDate &lt;span style="color: rgb(51, 51, 255);"&gt;DATETIME&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;INSERT&lt;/span&gt; #TestDeleteNull &lt;span style="color: rgb(51, 51, 255);"&gt;VALUES&lt;/span&gt;(&lt;span style="color: rgb(204, 51, 204);"&gt;GETDATE&lt;/span&gt;())&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;INSERT&lt;/span&gt; #TestDeleteNull &lt;span style="color: rgb(51, 51, 255);"&gt;VALUES&lt;/span&gt;(&lt;span style="color: rgb(204, 51, 204);"&gt;GETDATE&lt;/span&gt;())&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;INSERT&lt;/span&gt; #TestDeleteNull &lt;span style="color: rgb(51, 51, 255);"&gt;VALUES&lt;/span&gt;(NULL)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--Check what's in the table&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; * &lt;span style="color: rgb(51, 51, 255);"&gt;FROM&lt;/span&gt; #TestDeleteNull&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--This won't work&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;DELETE&lt;/span&gt; #TestDeleteNull&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;WHERE&lt;/span&gt; SomeDate = NULL&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--(0 row(s) affected)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--This is the way&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;DELETE&lt;/span&gt; #TestDeleteNull&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;WHERE&lt;/span&gt; SomeDate &lt;span style="color: rgb(51, 51, 255);"&gt;IS&lt;/span&gt; NULL&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--(1 row(s) affected)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;--Check again&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; * &lt;span style="color: rgb(51, 51, 255);"&gt;FROM&lt;/span&gt; #TestDeleteNull&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-8497003220502389130?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/8497003220502389130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=8497003220502389130' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/8497003220502389130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/8497003220502389130'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/how-to-delete-null-record.html' title='How To Delete a null record'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-9195222645106802135</id><published>2008-03-29T10:38:00.000-07:00</published><updated>2008-03-29T10:40:24.182-07:00</updated><title type='text'>SQL Case Statements</title><content type='html'>&lt;p&gt; SQL Case statement can be used in 2 forms:  &lt;/p&gt; &lt;ol&gt;&lt;li&gt;  &lt;div&gt;  SQL Case statement with simple expression to compare and get results.&lt;br /&gt; &lt;/div&gt;  &lt;/li&gt;&lt;li&gt;  &lt;div&gt;  SQL Case statement with search or comparison expression to get results.   &lt;/div&gt;  &lt;/li&gt;&lt;/ol&gt; &lt;p&gt;   &lt;/p&gt; &lt;p&gt; &lt;strong&gt;1. SQL Case statement with simple expression:&lt;br /&gt;&lt;/strong&gt;You can use default Northwind Database to test the functionality and syntax of SQL case statement.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;Syntax:&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;USE&lt;/span&gt; NORTHWIND&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt;&lt;br /&gt;&lt;span class="str"&gt;'Title'&lt;/span&gt; =&lt;br /&gt;&lt;span class="kwrd"&gt;CASE&lt;/span&gt; TITLEOFCOURTESY&lt;br /&gt;&lt;span class="kwrd"&gt;WHEN&lt;/span&gt; &lt;span class="str"&gt;'MS.'&lt;/span&gt; &lt;span class="kwrd"&gt;THEN&lt;/span&gt; &lt;span class="str"&gt;'MISSUS'&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;WHEN&lt;/span&gt; &lt;span class="str"&gt;'MRS.'&lt;/span&gt; &lt;span class="kwrd"&gt;THEN&lt;/span&gt; &lt;span class="str"&gt;'MISTRESS'&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;WHEN&lt;/span&gt; &lt;span class="str"&gt;'MR.'&lt;/span&gt; &lt;span class="kwrd"&gt;THEN&lt;/span&gt; &lt;span class="str"&gt;'MISTER'&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;WHEN&lt;/span&gt; &lt;span class="str"&gt;'DR.'&lt;/span&gt; &lt;span class="kwrd"&gt;THEN&lt;/span&gt; &lt;span class="str"&gt;'DOCTOR'&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;ELSE&lt;/span&gt; &lt;span class="str"&gt;''&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;END&lt;/span&gt;,&lt;br /&gt;TITLEOFCOURTESY,&lt;br /&gt;FIRSTNAME,&lt;br /&gt;LASTNAME&lt;br /&gt;&lt;span class="kwrd"&gt;FROM&lt;/span&gt; EMPLOYEES &lt;/pre&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt; &lt;strong&gt;Output:&lt;/strong&gt;  &lt;/p&gt; &lt;table border="1" bordercolor="#cccccc" cellpadding="0" cellspacing="0" width="274"&gt;  &lt;tbody&gt;   &lt;tr&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    &lt;strong&gt;Title&lt;/strong&gt;     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    &lt;strong&gt;TitleOfCourtsey&lt;/strong&gt;     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="68"&gt;    &lt;p&gt;    &lt;strong&gt;FirstName&lt;/strong&gt;     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="78"&gt;    &lt;p&gt;    &lt;strong&gt;LastName&lt;/strong&gt;     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    Missus     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    Ms.     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="68"&gt;    &lt;p&gt;    Nancy     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="78"&gt;    &lt;p&gt;    Davolio     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    Doctor     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    Dr.     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="68"&gt;    &lt;p&gt;    Andrew     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="78"&gt;    &lt;p&gt;    Fuller     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    Missus     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    Ms.     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="68"&gt;    &lt;p&gt;    Janet     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="78"&gt;    &lt;p&gt;    Leverling     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    Mistress     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    Mrs.     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="68"&gt;    &lt;p&gt;    Margaret     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="78"&gt;    &lt;p&gt;    Peacock     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    Mister     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    Mr.     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="68"&gt;    &lt;p&gt;    Steven     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="78"&gt;    &lt;p&gt;    Buchanan     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    Mister     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    Mr.     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="68"&gt;    &lt;p&gt;    Michael     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="78"&gt;    &lt;p&gt;    Suyama     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    Mister     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    Mr.     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="68"&gt;    &lt;p&gt;    Robert     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="78"&gt;    &lt;p&gt;    King     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    Missus     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    Ms.     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="68"&gt;    &lt;p&gt;    Laura     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="78"&gt;    &lt;p&gt;    Callahan     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    Missus     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    Ms.     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="68"&gt;    &lt;p&gt;    Anne     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="78"&gt;    &lt;p&gt;    Dodsworth     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;  &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;   &lt;/p&gt;&lt;p&gt; &lt;strong&gt;2. SQL Case Statement with search comparison expressions:&lt;/strong&gt;  &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Syntax:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;USE&lt;/span&gt; NORTHWIND&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt;&lt;br /&gt;&lt;span class="str"&gt;'COMMENT'&lt;/span&gt; =&lt;br /&gt;&lt;span class="kwrd"&gt;CASE&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;WHEN&lt;/span&gt;  UNITPRICE &lt;span class="kwrd"&gt;IS&lt;/span&gt; &lt;span class="kwrd"&gt;NULL&lt;/span&gt; &lt;span class="kwrd"&gt;THEN&lt;/span&gt; &lt;span class="str"&gt;'NO PRICE DEFINED'&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;WHEN&lt;/span&gt;  UNITPRICE &amp;lt; 20 &lt;span class="kwrd"&gt;THEN&lt;/span&gt; &lt;span class="str"&gt;'LOW PRICE'&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;WHEN&lt;/span&gt;  UNITPRICE &amp;gt; 20 &lt;span class="kwrd"&gt;AND&lt;/span&gt; UNITPRICE &amp;lt; 30 &lt;span class="kwrd"&gt;THEN&lt;/span&gt; &lt;span class="str"&gt;'REASONABLE PRICE'&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;ELSE&lt;/span&gt; &lt;span class="str"&gt;'EXPENSIVE ITEM!!!'&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;END&lt;/span&gt;,&lt;br /&gt;PRODUCTNAME,&lt;br /&gt;UNITPRICE&lt;br /&gt;&lt;span class="kwrd"&gt;FROM&lt;/span&gt; PRODUCTS&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Output&lt;/span&gt;: &lt;/pre&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt; &lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;  &lt;/p&gt;      &lt;table border="1" bordercolor="#cccccc" cellpadding="0" cellspacing="0" width="377"&gt;&lt;tbody&gt;&lt;tr&gt;    &lt;td valign="bottom" width="107"&gt;    &lt;p&gt;    &lt;strong&gt;Comment&lt;/strong&gt;     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="205"&gt;    &lt;p&gt;    &lt;strong&gt;ProductName&lt;/strong&gt;     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="81"&gt;    &lt;p align="right"&gt;    &lt;strong&gt;UnitPrice&lt;/strong&gt;     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="bottom" width="107"&gt;    &lt;p&gt;    Low Price     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="205"&gt;    &lt;p&gt;    Chai     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="81"&gt;    &lt;p align="right"&gt;    18.00     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="bottom" width="107"&gt;    &lt;p&gt;    Low Price     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="205"&gt;    &lt;p&gt;    Chang     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="81"&gt;    &lt;p align="right"&gt;    19.00     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="bottom" width="107"&gt;    &lt;p&gt;    Low Price     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="205"&gt;    &lt;p&gt;    Aniseed Syrup     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="81"&gt;    &lt;p align="right"&gt;    10.00     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="bottom" width="107"&gt;    &lt;p&gt;    Reasonable Price     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="205"&gt;    &lt;p&gt;    Chef Anton's Cajun Seasoning     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="81"&gt;    &lt;p align="right"&gt;    22.00     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="bottom" width="107"&gt;    &lt;p&gt;    Reasonable Price     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="205"&gt;    &lt;p&gt;    Chef Anton's Gumbo Mix     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="81"&gt;    &lt;p align="right"&gt;    21.35     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="bottom" width="107"&gt;    &lt;p&gt;    Reasonable Price     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="205"&gt;    &lt;p&gt;    Grandma's Boysenberry Spread     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="81"&gt;    &lt;p align="right"&gt;    25.00     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="bottom" width="107"&gt;    &lt;p&gt;    Expensive Item!!!     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="205"&gt;    &lt;p&gt;    Uncle Bob's Organic Dried Pears     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="81"&gt;    &lt;p align="right"&gt;    30.00     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="bottom" width="107"&gt;    &lt;p&gt;    Expensive Item!!!     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="205"&gt;    &lt;p&gt;    Northwoods Cranberry Sauce     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="81"&gt;    &lt;p align="right"&gt;    40.00     &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;  &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-9195222645106802135?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/9195222645106802135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=9195222645106802135' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/9195222645106802135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/9195222645106802135'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/sql-case-statements.html' title='SQL Case Statements'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-1962801084427424356</id><published>2008-03-29T10:37:00.001-07:00</published><updated>2008-03-29T10:37:38.587-07:00</updated><title type='text'>SQL SubSelect-SubQueries</title><content type='html'>&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;A sub query &lt;span class="kwrd"&gt;or&lt;/span&gt; sub &lt;span class="kwrd"&gt;select&lt;/span&gt; &lt;span class="kwrd"&gt;is&lt;/span&gt; a &lt;span class="kwrd"&gt;select&lt;/span&gt; &lt;span class="kwrd"&gt;statement&lt;/span&gt; that &lt;span class="kwrd"&gt;returns&lt;/span&gt; a single &lt;span class="kwrd"&gt;value&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;br /&gt;output&lt;/span&gt; &lt;span class="kwrd"&gt;result&lt;/span&gt; &lt;span class="kwrd"&gt;and&lt;/span&gt; it can be nested inside other subquery &lt;span class="kwrd"&gt;or&lt;/span&gt; &lt;span class="kwrd"&gt;any&lt;/span&gt; &lt;span class="kwrd"&gt;SELECT&lt;/span&gt;, &lt;span class="kwrd"&gt;INSERT&lt;/span&gt;,&lt;br /&gt;&lt;span class="kwrd"&gt;DELETE&lt;/span&gt; &lt;span class="kwrd"&gt;OR&lt;/span&gt; &lt;span class="kwrd"&gt;UPDATE&lt;/span&gt; &lt;span class="kwrd"&gt;statement&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;&lt;span class="kwrd"&gt;USE&lt;/span&gt; NORTHWIND&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; P.PRODUCTNAME,&lt;br /&gt;(&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; CATEGORYNAME &lt;span class="kwrd"&gt;FROM&lt;/span&gt; CATEGORIES &lt;span class="kwrd"&gt;WHERE&lt;/span&gt; CATEGORYID = P.CATEGORYID)&lt;br /&gt;&lt;span class="kwrd"&gt;FROM&lt;/span&gt; PRODUCTS P&lt;br /&gt;&lt;br /&gt;Subquery used &lt;span class="kwrd"&gt;in&lt;/span&gt; the above example &lt;span class="kwrd"&gt;returns&lt;/span&gt; the category name &lt;span class="kwrd"&gt;of&lt;/span&gt; &lt;span class="kwrd"&gt;each&lt;/span&gt; product&lt;br /&gt;&lt;span class="kwrd"&gt;in&lt;/span&gt; &lt;span class="kwrd"&gt;every&lt;/span&gt; tuple.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; P.PRODUCTNAME, P.UNITPRICE, P.CATEGORYID&lt;br /&gt;&lt;span class="kwrd"&gt;FROM&lt;/span&gt;&lt;br /&gt;PRODUCTS P&lt;br /&gt;&lt;span class="kwrd"&gt;WHERE&lt;/span&gt;&lt;br /&gt;P.PRODUCTID = (&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; PRODUCTID &lt;span class="kwrd"&gt;FROM&lt;/span&gt; PRODUCTS &lt;span class="kwrd"&gt;WHERE&lt;/span&gt; PRODUCTNAME=&lt;span class="str"&gt;'VEGIE-SPREAD'&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;Here subquery &lt;span class="kwrd"&gt;returns&lt;/span&gt; product id &lt;span class="kwrd"&gt;as&lt;/span&gt; single &lt;span class="kwrd"&gt;value&lt;/span&gt; &lt;span class="kwrd"&gt;to&lt;/span&gt; the main &lt;span class="kwrd"&gt;SQL&lt;/span&gt; query.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; C.CATEGORYNAME,&lt;br /&gt;&lt;br /&gt;(&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; &lt;span class="kwrd"&gt;TOP&lt;/span&gt; 1 P.PRODUCTNAME &lt;span class="kwrd"&gt;FROM&lt;/span&gt; PRODUCTS P &lt;span class="kwrd"&gt;WHERE&lt;/span&gt; P.CATEGORYID=C.CATEGORYID &lt;span class="kwrd"&gt;ORDER&lt;/span&gt; &lt;span class="kwrd"&gt;BY&lt;/span&gt; P.UNITPRICE &lt;span class="kwrd"&gt;DESC&lt;/span&gt;),&lt;br /&gt;&lt;br /&gt;(&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; &lt;span class="kwrd"&gt;TOP&lt;/span&gt; 1 P.UNITPRICE &lt;span class="kwrd"&gt;FROM&lt;/span&gt; PRODUCTS P &lt;span class="kwrd"&gt;WHERE&lt;/span&gt; P.CATEGORYID=C.CATEGORYID &lt;span class="kwrd"&gt;ORDER&lt;/span&gt; &lt;span class="kwrd"&gt;BY&lt;/span&gt; P.UNITPRICE &lt;span class="kwrd"&gt;DESC&lt;/span&gt;),&lt;br /&gt;&lt;br /&gt;(&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; &lt;span class="kwrd"&gt;MAX&lt;/span&gt;(P.UNITPRICE) &lt;span class="kwrd"&gt;FROM&lt;/span&gt; PRODUCTS P &lt;span class="kwrd"&gt;WHERE&lt;/span&gt; P.CATEGORYID=C.CATEGORYID)&lt;br /&gt;/*&lt;span class="kwrd"&gt;TO&lt;/span&gt; VERIFY THE &lt;span class="kwrd"&gt;RESULT&lt;/span&gt;*/&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;FROM&lt;/span&gt; CATEGORIES C&lt;br /&gt;&lt;br /&gt;Above example &lt;span class="kwrd"&gt;returns&lt;/span&gt; the maximum unit price &lt;span class="kwrd"&gt;of&lt;/span&gt; product, product name &lt;span class="kwrd"&gt;and&lt;/span&gt; category name. &lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-1962801084427424356?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/1962801084427424356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=1962801084427424356' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/1962801084427424356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/1962801084427424356'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/sql-subselect-subqueries.html' title='SQL SubSelect-SubQueries'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-8048292382511759022</id><published>2008-03-29T10:34:00.000-07:00</published><updated>2008-03-29T10:35:01.240-07:00</updated><title type='text'>SQL Count Distinct</title><content type='html'>&lt;p&gt; &lt;strong&gt;SQL Count Statement&lt;/strong&gt; is used to count the total number of records saved in a particular table. SQL Count Statement returns total records including duplicates. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;SQL Count (*) Statement&lt;/strong&gt; does not take any other argument such bas column name to evaluate the result. It counts all columns whether they have duplicates or nulls. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;E.g.:&lt;/strong&gt;  &lt;/p&gt; &lt;p&gt; &lt;span style="font-size:78%;"&gt;USE NORTHWIND&lt;/span&gt;  &lt;/p&gt; &lt;p&gt; &lt;span style="font-size:78%;"&gt;SELECT COUNT (*) FROM ORDERS&lt;/span&gt;  &lt;/p&gt; &lt;p&gt; Above SQL Query will return &lt;strong&gt;830.&lt;/strong&gt;  &lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;strong&gt;SQL Count (ALL [Column Name]) Statement&lt;/strong&gt; returns the number of records including duplicates but excluding null value columns  &lt;/p&gt; &lt;p&gt; &lt;strong&gt;E.g.:&lt;/strong&gt;  &lt;/p&gt; &lt;p&gt; &lt;span style="font-size:78%;"&gt;SELECT COUNT (ALL CUSTOMERID) FROM ORDERS&lt;/span&gt;  &lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;strong&gt;SQL Count (DISTINCT [Column Name]) Statement&lt;/strong&gt; returns unique, non null records.  &lt;/p&gt; &lt;p&gt; &lt;strong&gt;E.g.:&lt;/strong&gt;  &lt;/p&gt; &lt;p&gt; &lt;span style="font-size:78%;"&gt;SELECT COUNT (DISTINCT CUSTOMERID) FROM ORDERS&lt;/span&gt;  &lt;/p&gt;  Above SQL Query will return &lt;strong&gt;89.&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-8048292382511759022?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/8048292382511759022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=8048292382511759022' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/8048292382511759022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/8048292382511759022'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/sql-count-distinct.html' title='SQL Count Distinct'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-5371791277479222615</id><published>2008-03-29T10:30:00.000-07:00</published><updated>2008-03-29T10:31:18.667-07:00</updated><title type='text'>SQL Server 2005 Cast-Convert Date Time Format</title><content type='html'>&lt;p&gt; &lt;strong&gt;Using CAST function&lt;/strong&gt; in SQL Server 2005:  &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Syntax:&lt;/strong&gt;  &lt;/p&gt; &lt;p&gt; CAST (expression as datatype)  &lt;/p&gt; &lt;p&gt;   &lt;/p&gt; &lt;p&gt; &lt;strong&gt;CAST function &lt;/strong&gt;accepts expression name as column name or any SQL function that return expression or value and declare the datatype of the expression into which you want to cast/convert it. &lt;/p&gt; &lt;p&gt;   &lt;/p&gt; &lt;p&gt; Following are the &lt;strong&gt;SQL Server 2005 query syntax to cast DateTime into varchar:&lt;/strong&gt;  &lt;/p&gt; &lt;p&gt;   &lt;/p&gt; &lt;p&gt; &lt;strong&gt;E.g.:&lt;/strong&gt;  &lt;/p&gt; &lt;p&gt; USE Pubs  &lt;/p&gt; &lt;p&gt; select cast(pubdate as varchar) from titles  &lt;/p&gt; &lt;p&gt;   &lt;/p&gt; &lt;p&gt; or  &lt;/p&gt; &lt;p&gt;   &lt;/p&gt; &lt;p&gt; select cast(getdate() as varchar)  &lt;/p&gt; &lt;p&gt;   &lt;/p&gt; &lt;p&gt;&lt;br /&gt;Following are the &lt;strong&gt;MS SQL Server 2005 query Syntax to convert Time format:&lt;/strong&gt;  &lt;/p&gt; &lt;p&gt;   &lt;/p&gt; &lt;p&gt; SQL query to&lt;strong&gt; convert Time format into hh:mm:ss:&lt;/strong&gt;  &lt;/p&gt; &lt;p&gt; select convert(varchar, getdate(), 108)  &lt;/p&gt; &lt;p&gt;   &lt;/p&gt; &lt;p&gt; SQL query to &lt;strong&gt;convert Time format into hh:mi:ss:mmm(24h):&lt;/strong&gt;  &lt;/p&gt; &lt;p&gt; select convert(varchar, getdate(), 114)  &lt;/p&gt; &lt;p&gt;   &lt;/p&gt; &lt;p&gt; You can use datetime type column name instead of getdate() function.  &lt;/p&gt; &lt;p&gt; &lt;strong&gt;E.g.:&lt;/strong&gt;  &lt;/p&gt; &lt;p&gt; USE PUBS  &lt;/p&gt; &lt;p&gt; select convert(varchar,pubdate,108) from titles  &lt;/p&gt; &lt;p&gt;   &lt;/p&gt; &lt;p&gt; or  &lt;/p&gt; &lt;p&gt;   &lt;/p&gt; &lt;p&gt; select convert(varchar,pubdate,114) from titles  &lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;strong&gt;&lt;a href="http://programming.top54u.com/post/SQL-Server-2005-Convert-DateTime-Format.aspx"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/strong&gt;  &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-5371791277479222615?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/5371791277479222615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=5371791277479222615' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/5371791277479222615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/5371791277479222615'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/sql-server-2005-cast-convert-date-time.html' title='SQL Server 2005 Cast-Convert Date Time Format'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-4197789163316182667</id><published>2008-03-29T10:16:00.001-07:00</published><updated>2008-03-29T10:16:57.256-07:00</updated><title type='text'>How To Use COALESCE And NULLIF To Prevent Updating Columns When A Parameter IS NULL Or A Default Value</title><content type='html'>Let's say you have a proc like this&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;CREATE&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;PROC&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; prUpdateTable&lt;br /&gt;@Salesman &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;-&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;1&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;AS&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;..........&lt;br /&gt;&lt;br /&gt;If the user calls the proc like this  &lt;em&gt;&lt;strong&gt;exec prUpdateTable null&lt;/strong&gt;&lt;/em&gt;  then @Salesman will be null, if the user calls the proc like this &lt;em&gt;&lt;strong&gt;exec prUpdateTable&lt;/strong&gt;&lt;/em&gt; then the value of @Salesman will be -1. In both of this cases you don't want to change the value of the column. What can you do?&lt;br /&gt;You can use a combination of NULLIF and COALESCE to handle this. Your update statement would look like this&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;UPDATE&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;table&lt;br /&gt;SET&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;Column&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(255, 0, 255);"&gt;COALESCE&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;(&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(255, 0, 255);"&gt;NULLIF&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;(&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;@variable&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;,-&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;1&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;),&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;Column&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;)&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;&lt;br /&gt;&lt;/span&gt;Here is some code to demonstrate that&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p mce_keep="true"&gt;&lt;br /&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;CREATE&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;TABLE&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; #foo &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;(&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;id &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;,&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;salesman &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;INSERT&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; #foo &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;VALUES&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;(&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;1&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;,&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;1&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;INSERT&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; #foo &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;VALUES&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;(&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;2&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;,&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;1&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;INSERT&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; #foo &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;VALUES&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;(&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;3&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;,&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;1&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;INSERT&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; #foo &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;VALUES&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;(&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;4&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;,&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;1&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;SELECT&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;*&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;FROM&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; #foo&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 128, 0);"&gt;-------------&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;1 1&lt;br /&gt;2 1&lt;br /&gt;3 1&lt;br /&gt;4 1&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;DECLARE&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; @salesman &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;int&lt;br /&gt;SELECT&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; @salesman &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; 5&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 128, 0);"&gt;--Column value will change to 5&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;UPDATE&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; #foo&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;SET&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; salesman &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(255, 0, 255);"&gt;COALESCE&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;(&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(255, 0, 255);"&gt;NULLIF&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;(&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;@salesman&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;,-&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;1&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;),&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;salesman&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;WHERE&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; ID &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;1&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 128, 0);"&gt;&lt;br /&gt;--Column value won't change&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;SELECT&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; @salesman &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;-&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;1&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;UPDATE&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; #foo&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;SET&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; salesman &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(255, 0, 255);"&gt;COALESCE&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;(&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(255, 0, 255);"&gt;NULLIF&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;(&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;@salesman&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;,-&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;1&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;),&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;salesman&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;WHERE&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; ID &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;2&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 128, 0);"&gt;&lt;br /&gt;--Column value won't change&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;SELECT&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; @salesman &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;NULL&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;UPDATE&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; #foo&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;SET&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; salesman &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(255, 0, 255);"&gt;COALESCE&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;(&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(255, 0, 255);"&gt;NULLIF&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;(&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;@salesman&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;,-&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;1&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;),&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;salesman&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;WHERE&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; ID &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;3&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 128, 0);"&gt;&lt;br /&gt;--Column value will change to 3&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;SELECT&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; @salesman &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; 3&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;UPDATE&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; #foo&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;SET&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; salesman &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(255, 0, 255);"&gt;COALESCE&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;(&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(255, 0, 255);"&gt;NULLIF&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;(&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;@salesman&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;,-&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;1&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;),&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;salesman&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;WHERE&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; ID &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;4&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 128, 0);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%; color: rgb(0, 128, 0);"&gt;--And here is the output, as you can see when @salesman was -1 or NULL the table did not get updated&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;SELECT&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(128, 128, 128);"&gt;*&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;FROM&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; #foo&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 128, 0);"&gt;-------------&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;1 5&lt;br /&gt;2 1&lt;br /&gt;3 1&lt;br /&gt;4 3&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;DROP&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; &lt;/span&gt;&lt;span style="font-size: 85%; color: rgb(0, 0, 255);"&gt;TABLE&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; #foo&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;As you can see only the first and the last update statement changed the value of the salesman column&lt;br /&gt;Of course you would never do this if you were to update only one column, you would skip the update instead. If you have to update multiple columns then this is something you can use instead of writing a bunch of dynamic SQL or nested IF statements.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-4197789163316182667?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/4197789163316182667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=4197789163316182667' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/4197789163316182667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/4197789163316182667'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/how-to-use-coalesce-and-nullif-to.html' title='How To Use COALESCE And NULLIF To Prevent Updating Columns When A Parameter IS NULL Or A Default Value'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-5244687738125175358</id><published>2008-03-29T10:14:00.000-07:00</published><updated>2008-03-29T10:15:54.625-07:00</updated><title type='text'>How To Use Self Join In Sql Server 2000 2005</title><content type='html'>Self Join in SQL Server 2000/2005 helps in retrieving the records having some relation or similarity with other records in the same database table. A common example of employees table can do more clearly about the self join in sql. Self join in sql means joining the single table to itself. It creates the partial view of the single table and retrieves the related records. You can use aliases for the same table to set a self join between the single table and retrieve the records satisfying the condition in where clause.&lt;br /&gt;&lt;p&gt; For self join in sql you can try the following example:  &lt;/p&gt; &lt;p&gt;   &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Create table employees:&lt;/strong&gt;  &lt;/p&gt; &lt;table border="1" bordercolor="#e4e4e4" cellpadding="0" cellspacing="0"&gt;  &lt;tbody&gt;   &lt;tr&gt;    &lt;td valign="top" width="95"&gt;    &lt;p&gt;    &lt;strong&gt;emp_id &lt;/strong&gt;    &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="top" width="95"&gt;    &lt;p&gt;    &lt;strong&gt;emp_name &lt;/strong&gt;    &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="top" width="95"&gt;    &lt;p&gt;    &lt;strong&gt;emp_manager_id&lt;/strong&gt;     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="top" width="95"&gt;    &lt;p&gt;    1     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="top" width="95"&gt;    &lt;p&gt;    John     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="top" width="95"&gt;    &lt;p&gt;    Null     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="top" width="95"&gt;    &lt;p&gt;    2     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="top" width="95"&gt;    &lt;p&gt;    Tom     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="top" width="95"&gt;    &lt;p&gt;    1     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="top" width="95"&gt;    &lt;p&gt;    3     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="top" width="95"&gt;    &lt;p&gt;    Smith     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="top" width="95"&gt;    &lt;p&gt;    1     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="top" width="95"&gt;    &lt;p&gt;    4     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="top" width="95"&gt;    &lt;p&gt;    Albert     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="top" width="95"&gt;    &lt;p&gt;    2     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="top" width="95"&gt;    &lt;p&gt;    5     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="top" width="95"&gt;    &lt;p&gt;    David     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="top" width="95"&gt;    &lt;p&gt;    2     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="top" width="95"&gt;    &lt;p&gt;    6     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="top" width="95"&gt;    &lt;p&gt;    Murphy     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="top" width="95"&gt;    &lt;p&gt;    5     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="top" width="95"&gt;    &lt;p&gt;    7     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="top" width="95"&gt;    &lt;p&gt;    Petra     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="top" width="95"&gt;    &lt;p&gt;    5     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;  &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;   &lt;/p&gt; &lt;p&gt; Now to get the names of managers from the above single table you can use sub queries or simply the self join.  &lt;/p&gt; &lt;p&gt;   &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Self Join SQL Query to get the names of manager and employees:&lt;/strong&gt;  &lt;/p&gt; &lt;p&gt; select e1.emp_name 'manager',e2.emp_name 'employee'&lt;br /&gt;from employees e1 join employees e2&lt;br /&gt;on e1.emp_id=e2.emp_manager_id  &lt;/p&gt; &lt;p&gt;   &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Result:&lt;/strong&gt;  &lt;/p&gt; &lt;table border="1" bordercolor="#e4e4e4" cellpadding="0" cellspacing="0" width="128"&gt;  &lt;tbody&gt;   &lt;tr&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    &lt;strong&gt;manager &lt;/strong&gt;    &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    &lt;strong&gt;employee&lt;/strong&gt;     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    John     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    Tom     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    John     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    Smith     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    Tom     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    Albert     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    Tom     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    David     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    David     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    Murphy     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    David     &lt;/p&gt;    &lt;/td&gt;    &lt;td valign="bottom" width="64"&gt;    &lt;p&gt;    Petra     &lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;  &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt; &lt;br /&gt;&lt;/p&gt;&lt;p&gt; &lt;strong&gt;Understanding the Self Join Example&lt;/strong&gt;  &lt;/p&gt; &lt;p&gt; In the above self join query, &lt;strong&gt;employees&lt;/strong&gt; table is joined with itself using&lt;strong&gt; table aliases e1 and e2&lt;/strong&gt;. This creates the two views of a single table.  &lt;/p&gt; &lt;p&gt;   &lt;/p&gt; &lt;p&gt;&lt;span style="color: rgb(255, 102, 0);"&gt; from employees e1 join employees e2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt; on e1.emp_id=e2.emp_manager_id&lt;/span&gt;  &lt;/p&gt; &lt;p&gt;   &lt;/p&gt; &lt;p&gt; Here e.emp_manager_id passes the manager id from the 2nd view to the first aliased e1 table to get the names of managers.  &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-5244687738125175358?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/5244687738125175358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=5244687738125175358' title='35 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/5244687738125175358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/5244687738125175358'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/how-to-use-self-join-in-sql-server-2000.html' title='How To Use Self Join In Sql Server 2000 2005'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>35</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-2246735940147471275</id><published>2008-03-28T07:27:00.000-07:00</published><updated>2008-03-28T07:28:32.732-07:00</updated><title type='text'>Delete Duplicate rows from the table.</title><content type='html'>&lt;table cellpadding="2" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td colspan="2" class="ArticleContents"&gt;                                 Delete Duplicate rows from the table.                             &lt;/td&gt;                         &lt;/tr&gt;                         &lt;tr&gt;                             &lt;td colspan="2"&gt; &lt;/td&gt;                         &lt;/tr&gt;                         &lt;tr&gt;                             &lt;td colspan="2" class="ArticleContents"&gt;                                 Suppose there is a table called "EmployeeTable" which have some duplicate records.&lt;br /&gt;There is a three way to delete the duplicate rows.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;First way to delete duplicate rows :&lt;/b&gt; &lt;/u&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Select distinct * into Emp_Temp_Table from EmployeeTable&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;In the above line we are inserting all the distinct row of the "EmployeeTable" to another table "Emp_Temp_Table" (Emp_Temp_Table will create automatically when you use the above query.)&lt;br /&gt;Actuall the above query create clone of EmployeeTable and insert all the distinct row inside the Clone Table (Emp_Temp_Table).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;drop table EmployeeTable&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;&lt;i&gt;sp_rename 'Emp_Temp_Table',EmployeeTable'&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;Then Delete the orginal table and rename the clone table with the name of orginal table.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Second way to delete duplicate rows :&lt;/b&gt; &lt;/u&gt; &lt;br /&gt;&lt;br /&gt;&lt;i&gt;Select distinct * into Emp_Temp_Table from EmployeeTable&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;&lt;i&gt;Truncate table EmployeeTable&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;&lt;i&gt;insert into EmployeeTable select * from Emp_Temp_Table&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;&lt;i&gt;drop table Emp_Temp_Table&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Third way to delete duplicate rows :&lt;/b&gt; &lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Populate the new Primary Key&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;Alter table EmployeeTable add NewPK int NULL&lt;br /&gt;Go&lt;br /&gt;Declare @intCounter int&lt;br /&gt;Set @intCounter = 0&lt;br /&gt;Update EmployeeTable &lt;br /&gt;SET @intCounter = NewPK = @intCounter + 1&lt;br /&gt;&lt;br /&gt;Select name,RecCount=count(*), PktoKeep = max(NewPK)&lt;br /&gt;Into #dupes&lt;br /&gt;From EmployeeTable &lt;br /&gt;Group by name&lt;br /&gt;Having count(*) &gt; 1&lt;br /&gt;Order by count(*) desc&lt;br /&gt;&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;Delete dupes except one Primary key for each dup record&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;Delete test&lt;br /&gt;from EmployeeTable a join #dupes d&lt;br /&gt;a.name&lt;br /&gt;where a.NewPK not in (select PKtoKeep from #dupes)&lt;br /&gt;&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Remove the NewPK column&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;ALTER TABLE test DROP COLUMN NewPK&lt;br /&gt;go&lt;br /&gt;&lt;br /&gt;drop table #dupes &lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-2246735940147471275?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/2246735940147471275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=2246735940147471275' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/2246735940147471275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/2246735940147471275'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/delete-duplicate-rows-from-table.html' title='Delete Duplicate rows from the table.'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-3986936387210660801</id><published>2008-03-27T13:36:00.000-07:00</published><updated>2008-03-27T13:38:49.951-07:00</updated><title type='text'>How To Copy Data and Structure of One Table To Another New Tables</title><content type='html'>select * into newtable from originaltable where 1=1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-3986936387210660801?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/3986936387210660801/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=3986936387210660801' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/3986936387210660801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/3986936387210660801'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/how-to-copy-data-and-structure-of-one.html' title='How To Copy Data and Structure of One Table To Another New Tables'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-3919761776228059369</id><published>2008-03-26T08:25:00.000-07:00</published><updated>2008-03-26T08:26:27.483-07:00</updated><title type='text'>what Is Cursor</title><content type='html'>&lt;p&gt;The basic syntax of a cursor is:&lt;/p&gt;   &lt;pre&gt;DECLARE @AuthorID char(11)&lt;br /&gt; &lt;br /&gt;DECLARE c1 CURSOR &lt;strong&gt;READ_ONLY&lt;/strong&gt;&lt;br /&gt;FOR&lt;br /&gt;SELECT au_id&lt;br /&gt;FROM authors&lt;br /&gt;&lt;br /&gt;OPEN c1&lt;br /&gt;&lt;br /&gt;FETCH NEXT FROM c1&lt;br /&gt;INTO @AuthorID&lt;br /&gt;&lt;br /&gt;WHILE @@FETCH_STATUS = 0&lt;br /&gt;BEGIN&lt;br /&gt;&lt;br /&gt; PRINT @AuthorID&lt;br /&gt;&lt;br /&gt; FETCH NEXT FROM c1&lt;br /&gt; INTO @AuthorID&lt;br /&gt;&lt;br /&gt;END&lt;br /&gt;&lt;br /&gt;CLOSE c1&lt;br /&gt;DEALLOCATE c1&lt;/pre&gt;   &lt;p&gt;The DECLARE CURSOR statement defines the SELECT statement  that forms the basis of the cursor. You can do just about  anything here that you can do in a SELECT statement. The  OPEN statement statement executes the SELECT statement and  populates the result set. The FETCH statement returns a  row from the result set into the variable. You can select  multiple columns and return them into multiple variables.  The variable @@FETCH_STATUS is used to determine if there  are any more rows. It will contain 0 as long as there are  more rows. We use a WHILE loop to move through each row  of the result set.&lt;/p&gt;  &lt;p&gt;The READ_ONLY clause is important in the code sample  above.  That dramatically improves the performance  of the cursor.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-3919761776228059369?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/3919761776228059369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=3919761776228059369' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/3919761776228059369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/3919761776228059369'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/what-is-cursor.html' title='what Is Cursor'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-6006260091152932073</id><published>2008-03-26T08:07:00.000-07:00</published><updated>2008-03-26T08:08:23.259-07:00</updated><title type='text'>What is Triggers</title><content type='html'>A trigger is a database object that is &lt;em&gt;attached&lt;/em&gt; to a table. In many aspects it is similar to a stored procedure. As a matter of fact, triggers are often referred to as a "special kind of stored procedure." The main difference between a trigger and a stored procedure is that the former is attached to a table and is only &lt;em&gt;fired&lt;/em&gt; when an INSERT, UPDATE or DELETE occurs. You specify the modification action(s) that fire the trigger when it is created.  &lt;p&gt;The following shows how to create a trigger that displays the current system time when a row is inserted into the table to which it is attached.  &lt;/p&gt;&lt;pre&gt;&lt;span class="code"&gt;SET NOCOUNT ON&lt;br /&gt;&lt;br /&gt;CREATE TABLE Source (Sou_ID int IDENTITY, Sou_Desc varchar(10))&lt;br /&gt;go&lt;br /&gt;CREATE TRIGGER tr_Source_INSERT&lt;br /&gt;ON Source&lt;br /&gt;FOR INSERT&lt;br /&gt;AS&lt;br /&gt;PRINT GETDATE()&lt;br /&gt;go&lt;br /&gt;INSERT Source (Sou_Desc) VALUES ('Test 1')&lt;br /&gt;&lt;br /&gt;-- Results --&lt;br /&gt;&lt;br /&gt;Apr 28 2001  9:56AM&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-6006260091152932073?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/6006260091152932073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=6006260091152932073' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/6006260091152932073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/6006260091152932073'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/what-is-triggers.html' title='What is Triggers'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-6076196535443866308</id><published>2008-03-26T07:47:00.000-07:00</published><updated>2008-03-26T07:48:07.681-07:00</updated><title type='text'>Using EXISTS</title><content type='html'>&lt;p&gt;Many times you're required to write query to determine if a record exists. Typically you use this to determine whether to insert or update a records. Using the &lt;code&gt;EXISTS&lt;/code&gt; keyword is a great way to accomplish this. &lt;/p&gt;  &lt;!-- &lt;hr /&gt; --&gt;  Here's a simple example from the pubs database using EXISTS:  &lt;pre class="code"&gt;if EXISTS (select *&lt;br /&gt; from authors&lt;br /&gt; where au_id = '172-32-1176')&lt;br /&gt; Print 'Record exits - Update'&lt;br /&gt;ELSE&lt;br /&gt; Print 'Record doesn''t exist - Insert'&lt;/pre&gt;  &lt;p&gt;The &lt;code&gt;EXISTS&lt;/code&gt; function takes one parameter which is a SQL statement. If any records exist that match the criteria it returns true, otherwise it returns false. This gives you a clean, efficient way to write a stored procedure that does either an insert or update. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-6076196535443866308?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/6076196535443866308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=6076196535443866308' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/6076196535443866308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/6076196535443866308'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/using-exists.html' title='Using EXISTS'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-3357496490591845134</id><published>2008-03-26T07:34:00.000-07:00</published><updated>2008-03-26T07:36:27.902-07:00</updated><title type='text'>Returning Complex Data from User-Defined Functions</title><content type='html'>Returning multiple values from a UDF can be done fairly easily in SQL Server, but we must return those values as a virtual table. The following very simple ParseEmail() function accepts an email address as an argument, parses it, and returns the username and domain separately:&lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;    font-size: small;&lt;br /&gt;    color: black;&lt;br /&gt;    font-family: Consolas, "Courier New", Courier, Monospace;&lt;br /&gt;    background-color: #ffffff;&lt;br /&gt;    /*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;&lt;br /&gt;.csharpcode .alt&lt;br /&gt;{&lt;br /&gt;    background-color: #f4f4f4;&lt;br /&gt;    width: 100%;&lt;br /&gt;    margin: 0em;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;br /&gt;&lt;/style&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;create&lt;/span&gt; &lt;span class="kwrd"&gt;function&lt;/span&gt; EmailParse (@email &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(1000))&lt;br /&gt;&lt;span class="kwrd"&gt;returns&lt;/span&gt; @t &lt;span class="kwrd"&gt;table&lt;/span&gt; (UserName &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(20), &lt;span class="kwrd"&gt;Domain&lt;/span&gt; &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(20))&lt;br /&gt;&lt;span class="kwrd"&gt;as&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;begin&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;declare&lt;/span&gt; @i &lt;span class="kwrd"&gt;int&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;select&lt;/span&gt; @i = charindex(&lt;span class="str"&gt;'@'&lt;/span&gt;, @email,1);&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; (@i &amp;gt; 1)&lt;br /&gt;        &lt;span class="kwrd"&gt;insert&lt;/span&gt; &lt;span class="kwrd"&gt;into&lt;/span&gt; @t &lt;span class="kwrd"&gt;values&lt;/span&gt; (&lt;span class="kwrd"&gt;left&lt;/span&gt;(@email,@i-1), &lt;span class="kwrd"&gt;substring&lt;/span&gt;(@email,@i+1,20))&lt;br /&gt;    &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;insert&lt;/span&gt; &lt;span class="kwrd"&gt;into&lt;/span&gt; @t &lt;span class="kwrd"&gt;values&lt;/span&gt; (&lt;span class="kwrd"&gt;null&lt;/span&gt;,&lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt;&lt;br /&gt;end&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;how to use&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;select username, domain&lt;br /&gt;from   EmailParse('test@test.com')&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-3357496490591845134?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/3357496490591845134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=3357496490591845134' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/3357496490591845134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/3357496490591845134'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/returning-complex-data-from-user.html' title='Returning Complex Data from User-Defined Functions'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-3746791639758633232</id><published>2008-03-13T10:20:00.000-07:00</published><updated>2008-03-13T10:21:50.964-07:00</updated><title type='text'>What is Stored procedure?</title><content type='html'>A stored procedure is a          set of Structured Query Language (SQL) statements that you assign a name          to and store in a database in compiled form so that you can share it          between a number of programs.          &lt;ul&gt;&lt;li&gt;They allow modular programming.            &lt;/li&gt;&lt;li&gt;They allow faster execution.            &lt;/li&gt;&lt;li&gt;They can reduce network traffic.            &lt;/li&gt;&lt;li&gt;They can be used as a security mechanism. &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-3746791639758633232?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/3746791639758633232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=3746791639758633232' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/3746791639758633232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/3746791639758633232'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/what-is-stored-procedure.html' title='What is Stored procedure?'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-6784245779657332877</id><published>2008-03-13T10:17:00.000-07:00</published><updated>2008-03-13T10:19:14.940-07:00</updated><title type='text'>What are the differences between UNION and JOINS?</title><content type='html'>A join          selects columns from 2 or more tables. A union selects rows.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-6784245779657332877?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/6784245779657332877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=6784245779657332877' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/6784245779657332877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/6784245779657332877'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/what-are-differences-between-union-and.html' title='What are the differences between UNION and JOINS?'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-8768747390886347620</id><published>2008-03-13T10:12:00.000-07:00</published><updated>2008-03-13T10:16:47.324-07:00</updated><title type='text'>How many types of Joins?</title><content type='html'>oins can be categorized          as:          &lt;ul style="margin-bottom: 0in;" type="disc"&gt;&lt;li&gt;Inner joins (the typical join operation, which uses some            comparison operator like = or &lt;&gt;). These include equi-joins and            natural joins.&lt;br /&gt;Inner joins use a comparison operator to match rows            from two tables based on the values in common columns from each table.            For example, retrieving all rows where the student identification            number is the same in both the &lt;b&gt;students &lt;/b&gt;and &lt;b&gt;courses            &lt;/b&gt;tables.            &lt;/li&gt;&lt;li&gt;Outer joins. Outer joins can be a left, a right, or full outer            join.&lt;br /&gt;Outer joins are specified with one of the following sets of            keywords when they are specified in the FROM clause:            &lt;ul style="margin-bottom: 0in;" type="disc"&gt;&lt;li&gt;LEFT JOIN or LEFT OUTER JOIN -The result set of a left outer              join includes all the rows from the left table specified in the LEFT              OUTER clause, not just the ones in which the joined columns match.              When a row in the left table has no matching rows in the right              table, the associated result set row contains null values for all              select list columns coming from the right table.              &lt;/li&gt;&lt;li&gt;RIGHT JOIN or RIGHT OUTER JOIN - A right outer join is the              reverse of a left outer join. All rows from the right table are              returned. Null values are returned for the left table any time a              right table row has no matching row in the left table.              &lt;/li&gt;&lt;li&gt;FULL JOIN or FULL OUTER JOIN - A full outer join returns              all rows in both the left and right tables. Any time a row has no              match in the other table, the select list columns from the other              table contain null values. When there is a match between the tables,              the entire result set row contains data values from the base              tables. &lt;/li&gt;&lt;/ul&gt;           &lt;/li&gt;&lt;li&gt;Cross joins - Cross joins return all rows from the left            table, each row from the left table is combined with all rows from the            right table. Cross joins are also called &lt;b&gt;Cartesian products.&lt;/b&gt;            (A Cartesian join will get you a Cartesian product. A Cartesian            join is when you join every row of one table to every row of another            table. You can also get one by joining every row of a table to every            row of itself.) &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-8768747390886347620?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/8768747390886347620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=8768747390886347620' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/8768747390886347620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/8768747390886347620'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/how-many-types-of-joins.html' title='How many types of Joins?'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-5776619542813410453</id><published>2008-03-13T10:10:00.000-07:00</published><updated>2008-03-13T10:11:24.636-07:00</updated><title type='text'>Write a SQL Query to find first day of month?</title><content type='html'>&lt;span style="font-family:Courier New;"&gt;SELECT DATENAME(dw, DATEADD(dd, - DATEPART(dd,          GETDATE()) + 1, GETDATE())) AS FirstDay&lt;/span&gt;                                &lt;table id="Table4" style="border-collapse: collapse;" border="1" bordercolor="#000000" cellpadding="2" cellspacing="0" cols="2" frame="box" rules="all" width="240"&gt;&lt;tbody&gt;&lt;tr valign="top"&gt;             &lt;th width="118"&gt;Datepart&lt;/th&gt;             &lt;th width="119"&gt;Abbreviations&lt;/th&gt;&lt;/tr&gt;           &lt;tr valign="top"&gt;             &lt;td width="118"&gt;year&lt;/td&gt;             &lt;td width="119"&gt;yy, yyyy&lt;/td&gt;&lt;/tr&gt;           &lt;tr valign="top"&gt;             &lt;td width="118"&gt;quarter&lt;/td&gt;             &lt;td width="119"&gt;qq, q&lt;/td&gt;&lt;/tr&gt;           &lt;tr valign="top"&gt;             &lt;td width="118"&gt;month&lt;/td&gt;             &lt;td width="119"&gt;mm, m&lt;/td&gt;&lt;/tr&gt;           &lt;tr valign="top"&gt;             &lt;td width="118"&gt;dayofyear&lt;/td&gt;             &lt;td width="119"&gt;dy, y&lt;/td&gt;&lt;/tr&gt;           &lt;tr valign="top"&gt;             &lt;td width="118"&gt;day&lt;/td&gt;             &lt;td width="119"&gt;dd, d&lt;/td&gt;&lt;/tr&gt;           &lt;tr valign="top"&gt;             &lt;td width="118"&gt;week&lt;/td&gt;             &lt;td width="119"&gt;wk, ww&lt;/td&gt;&lt;/tr&gt;           &lt;tr valign="top"&gt;             &lt;td width="118"&gt;weekday&lt;/td&gt;             &lt;td width="119"&gt;dw&lt;/td&gt;&lt;/tr&gt;           &lt;tr valign="top"&gt;             &lt;td width="118"&gt;hour&lt;/td&gt;             &lt;td width="119"&gt;hh&lt;/td&gt;&lt;/tr&gt;           &lt;tr valign="top"&gt;             &lt;td width="118"&gt;minute&lt;/td&gt;             &lt;td width="119"&gt;mi, n&lt;/td&gt;&lt;/tr&gt;           &lt;tr valign="top"&gt;             &lt;td width="118"&gt;second&lt;/td&gt;             &lt;td width="119"&gt;ss, s&lt;/td&gt;&lt;/tr&gt;           &lt;tr valign="top"&gt;             &lt;td width="118"&gt;millisecond&lt;/td&gt;             &lt;td width="119"&gt;ms&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-5776619542813410453?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/5776619542813410453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=5776619542813410453' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/5776619542813410453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/5776619542813410453'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/write-sql-query-to-find-first-day-of.html' title='Write a SQL Query to find first day of month?'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-1662848760657827531</id><published>2008-03-13T10:08:00.000-07:00</published><updated>2008-03-13T10:09:11.115-07:00</updated><title type='text'># Write a query to round up the values of a number. For example even if the user enters 7.1 it should be rounded up to 8.</title><content type='html'>&lt;span style="font-family:Courier New;"&gt;SELECT CEILING (7.1)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-1662848760657827531?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/1662848760657827531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=1662848760657827531' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/1662848760657827531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/1662848760657827531'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/write-query-to-round-up-values-of.html' title='# Write a query to round up the values of a number. For example even if the user enters 7.1 it should be rounded up to 8.'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-7526286303582477215</id><published>2008-03-13T10:03:00.000-07:00</published><updated>2008-03-13T10:04:09.833-07:00</updated><title type='text'>Write a query to convert all the letters in a word to upper case</title><content type='html'>&lt;span style="font-family:Courier New;"&gt;SELECT UPPER('test')&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-7526286303582477215?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/7526286303582477215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=7526286303582477215' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/7526286303582477215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/7526286303582477215'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/write-query-to-convert-all-letters-in.html' title='Write a query to convert all the letters in a word to upper case'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-5559349246602477150</id><published>2008-03-13T10:02:00.001-07:00</published><updated>2008-03-13T10:02:57.867-07:00</updated><title type='text'>Find top salary among two tables</title><content type='html'>&lt;span style="font-family:Courier New;"&gt;SELECT TOP 1 sal&lt;br /&gt;FROM (SELECT MAX(sal) AS          sal&lt;br /&gt;FROM sal1&lt;br /&gt;UNION&lt;br /&gt;SELECT MAX(sal) AS sal&lt;br /&gt;FROM sal2)          a&lt;br /&gt;ORDER BY sal DESC&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-5559349246602477150?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/5559349246602477150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=5559349246602477150' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/5559349246602477150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/5559349246602477150'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/find-top-salary-among-two-tables.html' title='Find top salary among two tables'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-3393766068060311804</id><published>2008-03-13T10:00:00.000-07:00</published><updated>2008-03-13T10:01:45.997-07:00</updated><title type='text'>How to delete the rows which are duplicate (don’t delete both duplicate records).</title><content type='html'>&lt;span style="font-family:Courier New;"&gt;SET ROWCOUNT          1&lt;br /&gt;DELETE yourtable&lt;br /&gt;FROM yourtable a&lt;br /&gt;WHERE (SELECT COUNT(*) FROM          yourtable b WHERE b.name1 = a.name1 AND b.age1 = a.age1) &gt; 1&lt;br /&gt;WHILE          @@rowcount &gt; 0&lt;br /&gt;  DELETE yourtable&lt;br /&gt;  FROM yourtable          a&lt;br /&gt;  WHERE (SELECT COUNT(*) FROM yourtable b WHERE b.name1 =          a.name1 AND b.age1 = a.age1) &gt; 1&lt;br /&gt;SET ROWCOUNT 0&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-3393766068060311804?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/3393766068060311804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=3393766068060311804' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/3393766068060311804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/3393766068060311804'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/how-to-delete-rows-which-are-duplicate.html' title='How to delete the rows which are duplicate (don’t delete both duplicate records).'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-2353212689633327042</id><published>2008-03-13T09:58:00.000-07:00</published><updated>2008-03-13T10:00:22.613-07:00</updated><title type='text'>Find duplicate rows in a table?</title><content type='html'>&lt;ol&gt;&lt;li&gt;&lt;b&gt;Find duplicate rows in a table? OR I have a table with one column          which has many records which are not distinct. I need to find the          distinct values from that column and number of times it’s          repeated.&lt;/b&gt;&lt;span style="font-family:Courier New;"&gt;&lt;br /&gt;SELECT sid, mark, COUNT(*) AS          Counter&lt;br /&gt;FROM marks&lt;br /&gt;GROUP BY sid, mark&lt;br /&gt;HAVING (COUNT(*) &gt;          1)&lt;/span&gt;          &lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-2353212689633327042?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/2353212689633327042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=2353212689633327042' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/2353212689633327042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/2353212689633327042'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/find-duplicate-rows-in-table.html' title='Find duplicate rows in a table?'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-7149409220320970092</id><published>2008-03-13T09:05:00.000-07:00</published><updated>2008-03-13T09:06:04.293-07:00</updated><title type='text'>How to know how many tables contains empno as a column in a database?</title><content type='html'>&lt;span style="font-family:Courier New;"&gt;SELECT COUNT(*) AS          Counter&lt;br /&gt;FROM syscolumns&lt;br /&gt;WHERE (name = 'empno')&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-7149409220320970092?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/7149409220320970092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=7149409220320970092' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/7149409220320970092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/7149409220320970092'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/how-to-know-how-many-tables-contains.html' title='How to know how many tables contains empno as a column in a database?'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-8303069947198925473</id><published>2008-03-13T09:03:00.000-07:00</published><updated>2008-03-13T09:04:08.326-07:00</updated><title type='text'>T-SQL Queries</title><content type='html'>There is a table which contains the names like this. a1, a2, a3, a3,          a4, a1, a1, a2 and their salaries. Write a query to get grand total          salary, and total salaries of individual employees in one          query.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;SELECT empid, SUM(salary) AS          salary&lt;br /&gt;FROM employee&lt;br /&gt;GROUP BY empid WITH ROLLUP&lt;br /&gt;ORDER BY          empid&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-8303069947198925473?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/8303069947198925473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=8303069947198925473' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/8303069947198925473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/8303069947198925473'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/t-sql-queries_1996.html' title='T-SQL Queries'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-3123039365417956108</id><published>2008-03-13T09:02:00.001-07:00</published><updated>2008-03-13T09:02:55.927-07:00</updated><title type='text'>T-SQL Queries</title><content type='html'>There is a table day_temp which has three columns dayid, day and          temperature. How do I write a query to get the difference of temperature          among each other for seven days of a week?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;SELECT a.dayid, a.dday, a.tempe, a.tempe - b.tempe AS          Difference&lt;br /&gt;FROM day_temp a INNER JOIN&lt;br /&gt;day_temp b ON a.dayid =          b.dayid + 1&lt;br /&gt;OR&lt;br /&gt;Select a.day, a.degree-b.degree from temperature a,          temperature b where a.id=b.id+1&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-3123039365417956108?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/3123039365417956108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=3123039365417956108' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/3123039365417956108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/3123039365417956108'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/t-sql-queries_13.html' title='T-SQL Queries'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-8783726201205707862</id><published>2008-03-13T08:38:00.000-07:00</published><updated>2008-03-13T08:57:17.732-07:00</updated><title type='text'>T-SQL</title><content type='html'>There are two employee tables named emp1 and emp2. Both contains          same structure (salary details). But Emp2 salary details are incorrect          and emp1 salary details are correct. So, write a query which corrects          salary details of the table emp2&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;update a          set a.sal=b.sal from emp1 a, emp2 b where a.empid=b.empid&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-8783726201205707862?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/8783726201205707862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=8783726201205707862' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/8783726201205707862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/8783726201205707862'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/there-are-two-employee-tables-named.html' title='T-SQL'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-1077337321885822236</id><published>2008-03-13T08:32:00.000-07:00</published><updated>2008-03-13T08:35:04.593-07:00</updated><title type='text'>T-SQL Queries</title><content type='html'>2 tables          &lt;table id="Table2" style="border-collapse: collapse;" border="1" cellpadding="2" cellspacing="0" width="20%"&gt;           &lt;tbody&gt;           &lt;tr&gt;             &lt;td width="50%"&gt;&lt;b&gt;Employee&lt;/b&gt;&lt;/td&gt;             &lt;td width="50%"&gt;&lt;b&gt;Phone&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;           &lt;tr&gt;             &lt;td width="50%"&gt;empid&lt;br /&gt;empname&lt;br /&gt;salary&lt;br /&gt;mgrid&lt;/td&gt;             &lt;td width="50%"&gt;empid&lt;br /&gt;phnumber&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span style="color: rgb(255, 102, 102);"&gt;Select all          employees who doesn't have phone?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Courier New;"&gt;SELECT          empname&lt;br /&gt;FROM Employee&lt;br /&gt;WHERE (empid NOT IN&lt;br /&gt;(SELECT DISTINCT          empid&lt;br /&gt;FROM phone))&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:Courier New;" &gt;Select the employee names who is having more than one phone          numbers.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="font-family:Courier New;"&gt;SELECT empname&lt;br /&gt;FROM          employee&lt;br /&gt;WHERE (empid IN&lt;br /&gt;(SELECT empid&lt;br /&gt;FROM phone&lt;br /&gt;GROUP BY          empid&lt;br /&gt;HAVING COUNT(empid) &gt; 1))&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:Courier New;" &gt;Select the details of 3 max salaried employees from employee          table.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="font-family:Courier New;"&gt;SELECT TOP 3 empid, salary&lt;br /&gt;FROM          employee&lt;br /&gt;ORDER BY salary DESC&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:Courier New;" &gt;Display all managers from the table. (manager id is same as emp          id)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="font-family:Courier New;"&gt;SELECT empname&lt;br /&gt;FROM employee&lt;br /&gt;WHERE          (empid IN&lt;br /&gt;(SELECT DISTINCT mgrid&lt;br /&gt;FROM employee))&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Write a Select statement to list the Employee Name, Manager Name          under a particular manager?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Courier New;"&gt;SELECT          e1.empname AS EmpName, e2.empname AS ManagerName&lt;br /&gt;FROM Employee e1          INNER JOIN&lt;br /&gt;Employee e2 ON e1.mgrid = e2.empid&lt;br /&gt;ORDER BY          e2.mgrid&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-1077337321885822236?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/1077337321885822236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=1077337321885822236' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/1077337321885822236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/1077337321885822236'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/t-sql-queries.html' title='T-SQL Queries'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-4787201665950325722</id><published>2008-03-12T09:23:00.001-07:00</published><updated>2008-03-12T09:23:58.568-07:00</updated><title type='text'>T-SQL: Leap Year Check</title><content type='html'>&lt;p&gt;There are various techniques to determine whether a given year is a leap year. The most common way which is widely taught at schools and universities is to detect whether the given year is divided by 4, 100 and not by 400, something like that.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Below is a small T-SQL function that checks for leap year while it uses more smart - shifting technique, which I advice to use where possible.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;ALTER FUNCTION F_BIT_LEAP_YEAR&lt;br /&gt;(@p_year SMALLINT)&lt;br /&gt;RETURNS BIT&lt;br /&gt;AS&lt;br /&gt;BEGIN&lt;br /&gt;   DECLARE @p_leap_date SMALLDATETIME&lt;br /&gt;   DECLARE @p_check_day TINYINT&lt;br /&gt;&lt;br /&gt;   SET @p_leap_date = CONVERT(VARCHAR(4), @p_year) + '0228'&lt;br /&gt;   SET @p_check_day = DATEPART(d, DATEADD(d, 1, @p_leap_date))&lt;br /&gt;   IF (@p_check_day = 29)&lt;br /&gt;       RETURN 1&lt;br /&gt;&lt;br /&gt;   RETURN 0 &lt;br /&gt;END&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Use this way:&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;SELECT dbo.F_BIT_LEAP_YEAR(2003)&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-4787201665950325722?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/4787201665950325722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=4787201665950325722' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/4787201665950325722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/4787201665950325722'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/t-sql-leap-year-check.html' title='T-SQL: Leap Year Check'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-6291279178199061116</id><published>2008-03-12T09:13:00.000-07:00</published><updated>2008-03-12T09:22:11.460-07:00</updated><title type='text'>T-SQL: Optional Parameters in Select Query (Using ISNULL)</title><content type='html'>&lt;p&gt;Suppose, you have to make search in the database table having optional parameters. For example you have some application with advanced search UI where user does not have to fill all search criteria. We can make it with one small trick - using &lt;i&gt;ISNULL&lt;/i&gt; function.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;CREATE PROC Search&lt;br /&gt;(&lt;br /&gt;   @param1 INT = NULL&lt;br /&gt;  ,@param2 INT = NULL&lt;br /&gt;)&lt;br /&gt;AS&lt;br /&gt;BEGIN&lt;br /&gt;&lt;br /&gt;  SELECT column1&lt;br /&gt;    FROM table1&lt;br /&gt;   WHERE column1 = ISNULL(@param1, column1)&lt;br /&gt;     AND column2 = ISNULL(@param2, column2)&lt;br /&gt;&lt;br /&gt;END&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;If the 1st param in &lt;i&gt;ISNULL&lt;/i&gt; function is null - it returns 2nd parameter.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-6291279178199061116?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/6291279178199061116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=6291279178199061116' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/6291279178199061116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/6291279178199061116'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/t-sql-optional-parameters-in-select.html' title='T-SQL: Optional Parameters in Select Query (Using ISNULL)'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-4367495482673168892</id><published>2008-03-12T09:11:00.000-07:00</published><updated>2008-03-12T09:12:27.943-07:00</updated><title type='text'>HowTo Convert Table Values to Comma-Delimited String</title><content type='html'>&lt;p&gt;We have 2 tables related as one-to-many. How can we fetch parent table field, and child table values comma-delimited ? The function below demonstrates a technique how to convert table values into comma-delimited string with one query.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;ALTER FUNCTION F_GET_STR&lt;br /&gt;(@p_order_id int)&lt;br /&gt;RETURNS varchar(1000)&lt;br /&gt;AS&lt;br /&gt;   BEGIN&lt;br /&gt;&lt;br /&gt;   DECLARE @p_str VARCHAR(1000)&lt;br /&gt;   SET @p_str = ''&lt;br /&gt;&lt;br /&gt;   SELECT @p_str = @p_str + ',' + CAST(productid AS VARCHAR(6))&lt;br /&gt;     FROM [order details]&lt;br /&gt;    WHERE orderid = @p_order_id&lt;br /&gt;&lt;br /&gt;   RETURN @p_str&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;END&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Use this way:&lt;/p&gt;&lt;br /&gt;    SELECT orderid           ,dbo.F_GET_STR(orderid)       FROM orders &lt;pre&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-4367495482673168892?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/4367495482673168892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=4367495482673168892' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/4367495482673168892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/4367495482673168892'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/howto-convert-table-values-to-comma.html' title='HowTo Convert Table Values to Comma-Delimited String'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-2833284941906010314</id><published>2008-03-12T09:04:00.000-07:00</published><updated>2008-03-12T09:06:04.675-07:00</updated><title type='text'>Select Middle Record</title><content type='html'>&lt;i&gt;SELECT TOP 1&lt;/i&gt; query in T-SQL helps to find the first or the last record of the table data sorted by some criteria. But what if we need to find exactly middle record entry in the table ? Below is a small T-SQL query snippet that demonstrates a technique how to get middle record in a single query&lt;br /&gt;&lt;br /&gt;SELECT TOP 1 UserId&lt;br /&gt;  FROM (SELECT TOP 50 PERCENT UserId&lt;br /&gt;          FROM addressbook WITH (NOLOCK)&lt;br /&gt;         ORDER BY UserId ASC) AS T1&lt;br /&gt; ORDER BY 1 DESC&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-2833284941906010314?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/2833284941906010314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=2833284941906010314' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/2833284941906010314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/2833284941906010314'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/select-middle-record.html' title='Select Middle Record'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-3075919973280538115</id><published>2008-03-12T08:16:00.000-07:00</published><updated>2008-03-12T08:18:17.518-07:00</updated><title type='text'>How TO Find age from date of birth</title><content type='html'>SELECT FLOOR(DATEDIFF(DAY, @BirthDate, @TargetDate) / 365.25)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-3075919973280538115?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/3075919973280538115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=3075919973280538115' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/3075919973280538115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/3075919973280538115'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/how-to-find-age-from-date-of-birth.html' title='How TO Find age from date of birth'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-6553613641590260029</id><published>2008-03-12T08:14:00.000-07:00</published><updated>2008-03-12T08:15:04.804-07:00</updated><title type='text'>Get only Date from DateTime without performing any</title><content type='html'>SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-6553613641590260029?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/6553613641590260029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=6553613641590260029' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/6553613641590260029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/6553613641590260029'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/get-only-date-from-datetime-without.html' title='Get only Date from DateTime without performing any'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-6060106903904467671</id><published>2008-03-12T08:08:00.001-07:00</published><updated>2008-03-12T08:08:59.803-07:00</updated><title type='text'>How can I find the last day of the month</title><content type='html'>&lt;pre&gt;SELECT DATEADD(ms, -5, DATEADD(mm, DATEDIFF(m, 0, GETDATE()) + 1, 0))&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-6060106903904467671?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/6060106903904467671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=6060106903904467671' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/6060106903904467671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/6060106903904467671'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/how-can-i-find-last-day-of-month.html' title='How can I find the last day of the month'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-5070476915693697487</id><published>2008-03-12T08:05:00.000-07:00</published><updated>2008-03-12T08:06:38.282-07:00</updated><title type='text'>How To get the comma delimited list:</title><content type='html'>DECLARE @EmailList nvarchar(100)&lt;br /&gt;SELECT @EmailList = COALESCE(@EmailList,'') + COALESCE(Email,'') + ',' FROM addressbook&lt;br /&gt;WHERE Email IS NOT NULL&lt;br /&gt;SET @EmailList = SUBSTRING(@EmailList,0,LEN(RTRIM(@EmailList)))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PRINT @EmailList&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-5070476915693697487?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/5070476915693697487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=5070476915693697487' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/5070476915693697487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/5070476915693697487'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/how-to-get-comma-delimited-list.html' title='How To get the comma delimited list:'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-1450587391216241823</id><published>2008-03-12T08:00:00.000-07:00</published><updated>2008-03-12T08:02:21.769-07:00</updated><title type='text'>Returning String Instead of NULL:</title><content type='html'>Consider a situation in which your database table contains NULL and you don't want to return NULL but some message. Like suppose you have a Person table and a Phone Table and a person does not have a phone number so we can easily return a message saying "No Phone Number Found" instead of returning a NULL.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;SELECT P.Name, 'PhoneNumber'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;= CASE WHEN Ph.PhoneNumber IS NULL THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;'No Phone Number Exists'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;ELSE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;Ph.PhoneNumber&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;END&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;FROM tblPerson P, tblPhone Ph&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;WHERE P.PersonID = Ph.PersonID&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;You can also use the ISNULL method of the SQL SERVER 2000 to do the same operation. Check out the code below which returns the same result.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="color: rgb(255, 0, 0);"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;b&gt;&lt;span style="font-family:Courier New;"&gt;SELECT P.Name, Ph.PhoneNumber, ISNULL(Ph.CellNumber,'No Phone Number') AS CellNumber&lt;br /&gt;FROM tblPerson P, tblPhone Ph&lt;br /&gt;WHERE P.PersonID = Ph.PersonID&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-1450587391216241823?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/1450587391216241823/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=1450587391216241823' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/1450587391216241823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/1450587391216241823'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/returning-string-instead-of-null.html' title='Returning String Instead of NULL:'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-1807295061550041963</id><published>2008-03-11T10:05:00.000-07:00</published><updated>2008-03-11T10:06:41.946-07:00</updated><title type='text'>User Define Function For Converting Column Value in Row Format</title><content type='html'>set ANSI_NULLS ON&lt;br /&gt;set QUOTED_IDENTIFIER ON&lt;br /&gt;go&lt;br /&gt;&lt;br /&gt;ALTER FUNCTION [dbo].[udf_GetAddressBookTitle](@AddressId int)&lt;br /&gt;RETURNS @TitleTbl TABLE (Title varchar(1000))&lt;br /&gt;AS&lt;br /&gt;&lt;br /&gt;BEGIN  &lt;br /&gt; &lt;br /&gt; Declare @TitleTblVal varchar(50)&lt;br /&gt; Declare @TitleCombinedVal varchar(1000)&lt;br /&gt; Declare getAllTitleOfAddressBook cursor for &lt;br /&gt; Select Title From AddressBookTitle Where AddressId = @AddressId&lt;br /&gt; Open getAllTitleOfAddressBook&lt;br /&gt; Fetch Next From getAllTitleOfAddressBook Into @TitletblVal&lt;br /&gt; Set @TitleCombinedVal = ''&lt;br /&gt; While (@@FETCH_STATUS=0)&lt;br /&gt;  BEGIN&lt;br /&gt;   Set @TitleCombinedVal = @TitleCombinedVal + @TitleTblVal +'&lt;br&gt;'&lt;br /&gt;   Fetch Next From getAllTitleOfAddressBook Into @TitletblVal&lt;br /&gt;  END&lt;br /&gt; Insert Into @TitleTbl values(@TitleCombinedVal) &lt;br /&gt;&lt;br /&gt; RETURN&lt;br /&gt;&lt;br /&gt;END&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-1807295061550041963?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/1807295061550041963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=1807295061550041963' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/1807295061550041963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/1807295061550041963'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/user-define-function-for-converting.html' title='User Define Function For Converting Column Value in Row Format'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-8631857016771815469</id><published>2008-03-11T10:04:00.000-07:00</published><updated>2008-03-11T10:05:38.665-07:00</updated><title type='text'>How To Split String in SQL</title><content type='html'>set ANSI_NULLS ON&lt;br /&gt;set QUOTED_IDENTIFIER ON&lt;br /&gt;go&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ALTER FUNCTION [dbo].[Split](@String nvarchar(4000), @Delimiter char(1))&lt;br /&gt;RETURNS @Results TABLE (Items nvarchar(4000))&lt;br /&gt;AS&lt;br /&gt;    BEGIN&lt;br /&gt;    DECLARE @INDEX INT&lt;br /&gt;    DECLARE @SLICE nvarchar(4000)&lt;br /&gt;    -- HAVE TO SET TO 1 SO IT DOESNT EQUAL Z&lt;br /&gt;    --     ERO FIRST TIME IN LOOP&lt;br /&gt;    SELECT @INDEX = 1&lt;br /&gt;    -- following line added 10/06/04 as null&lt;br /&gt;    --      values cause issues&lt;br /&gt;    IF @String IS NULL RETURN&lt;br /&gt;    WHILE @INDEX !=0&lt;br /&gt;        BEGIN &lt;br /&gt;         -- GET THE INDEX OF THE FIRST OCCURENCE OF THE SPLIT CHARACTER&lt;br /&gt;         SELECT @INDEX = CHARINDEX(@Delimiter,@STRING)&lt;br /&gt;         -- NOW PUSH EVERYTHING TO THE LEFT OF IT INTO THE SLICE VARIABLE&lt;br /&gt;         IF @INDEX !=0&lt;br /&gt;          SELECT @SLICE = LEFT(@STRING,@INDEX - 1)&lt;br /&gt;         ELSE&lt;br /&gt;          SELECT @SLICE = @STRING&lt;br /&gt;         -- PUT THE ITEM INTO THE RESULTS SET&lt;br /&gt;         INSERT INTO @Results(Items) VALUES(@SLICE)&lt;br /&gt;         -- CHOP THE ITEM REMOVED OFF THE MAIN STRING&lt;br /&gt;         SELECT @STRING = RIGHT(@STRING,LEN(@STRING) - @INDEX)&lt;br /&gt;         -- BREAK OUT IF WE ARE DONE&lt;br /&gt;         IF LEN(@STRING) = 0 BREAK&lt;br /&gt;    END&lt;br /&gt;    RETURN&lt;br /&gt;END&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-8631857016771815469?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/8631857016771815469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=8631857016771815469' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/8631857016771815469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/8631857016771815469'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/how-to-split-string-in-sql.html' title='How To Split String in SQL'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-2214483211542849897</id><published>2008-03-10T03:09:00.001-07:00</published><updated>2008-03-11T09:57:14.004-07:00</updated><title type='text'>If there are 1 millinon rows ,how would you remove the data without using delete and truncate.</title><content type='html'>The method can be like dropping the table and recreating the structure again&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-2214483211542849897?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/2214483211542849897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=2214483211542849897' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/2214483211542849897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/2214483211542849897'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/if-there-are-1-millinon-rows-how-would.html' title='If there are 1 millinon rows ,how would you remove the data without using delete and truncate.'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-5364759675207470909</id><published>2008-03-10T03:08:00.003-07:00</published><updated>2008-03-11T09:48:50.954-07:00</updated><title type='text'>There is an employee table having dep_id field  and another department master table.List aa dept not having any employee</title><content type='html'>&lt;span style="color: rgb(255, 102, 102);"&gt;Select dept_id from department where dept_id not in(select dept_id from employee)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-5364759675207470909?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/5364759675207470909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=5364759675207470909' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/5364759675207470909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/5364759675207470909'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/thjere-ios-employee-table-having-depeid.html' title='There is an employee table having dep_id field  and another department master table.List aa dept not having any employee'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-2777094545813243033</id><published>2008-03-10T03:08:00.001-07:00</published><updated>2008-03-11T09:49:40.568-07:00</updated><title type='text'>What is Trigger?</title><content type='html'>Triggers are a special form of stored procedure that comes into effect when a user gives a change command such as insert ,delete,update to a specified table or column&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Triggers are often used to enforce referential integrity&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-2777094545813243033?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/2777094545813243033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=2777094545813243033' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/2777094545813243033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/2777094545813243033'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/trigger.html' title='What is Trigger?'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-2911589654729969662</id><published>2008-03-10T03:07:00.006-07:00</published><updated>2008-03-10T03:08:14.654-07:00</updated><title type='text'>Find 3rd max salary</title><content type='html'>Count() will give the numer of non-null values in sxp.&lt;br /&gt;&lt;br /&gt;Select salary from sal s&lt;br /&gt;Where 2=(select count(8) from sal s1 where s.salary&lt;s1.salary0&lt;br /&gt;&lt;br /&gt;The same co-related query cabn be used to find the nth max salary the number with the where clause should be n-1 for .&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-2911589654729969662?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/2911589654729969662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=2911589654729969662' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/2911589654729969662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/2911589654729969662'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/find-3rd-max-salary.html' title='Find 3rd max salary'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-5166278934787153591</id><published>2008-03-10T03:07:00.005-07:00</published><updated>2008-03-11T09:52:23.819-07:00</updated><title type='text'>Define having , order by ,group by</title><content type='html'>&lt;span style="color: rgb(255, 0, 0);"&gt;Having-&lt;/span&gt; clause set the condintion on the group by clause.&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Order By-&lt;/span&gt;Order by  clause allows sorting of query results by one or more columns.each sort can be either asc of des.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Group by&lt;/span&gt; – Group By is used  in select statement to divide the output of table into groups.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1transcation log&lt;br /&gt;every changes to the databse whether it is the result of a single ipdate stm or a grouped set of sql stm automatically record in the system table.this table is called tranc log.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-5166278934787153591?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/5166278934787153591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=5166278934787153591' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/5166278934787153591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/5166278934787153591'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/having-order-by-group-by.html' title='Define having , order by ,group by'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-8234792604755780087</id><published>2008-03-10T03:07:00.003-07:00</published><updated>2008-03-11T09:54:04.375-07:00</updated><title type='text'>Types of constraint</title><content type='html'>1. constraint&lt;br /&gt;2. primary key constrain&lt;br /&gt;3.check constrain&lt;br /&gt;4.referential integrity constraint (foreign key)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-8234792604755780087?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/8234792604755780087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=8234792604755780087' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/8234792604755780087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/8234792604755780087'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/types-of-constraint.html' title='Types of constraint'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-5114245435210875002</id><published>2008-03-10T03:07:00.001-07:00</published><updated>2008-03-11T09:55:46.767-07:00</updated><title type='text'>what are index?</title><content type='html'>Indexs help sql server locate data.they speed up the data retrieval by pointing sql server to the location of table column;’s data on disk.There are tow type of index.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Clustered index&lt;/span&gt;-clustered index force sqlserver continually sort and re-sort the rows of table so that physical order is always Same as the logical order.&lt;span style="color: rgb(255, 102, 102);"&gt;you cab have only one cluster index per table.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 102);"&gt;Non_cluster index&lt;/span&gt;-Do not require the physical order of rows to be the same as their index order.each non clusterd index can provide access to the data in a different order.&lt;span style="color: rgb(255, 102, 102);"&gt;you can have 249 nonclusterd  index per table&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-5114245435210875002?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/5114245435210875002/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=5114245435210875002' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/5114245435210875002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/5114245435210875002'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/what-are-index.html' title='what are index?'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-8753366872975359278</id><published>2008-03-10T03:06:00.005-07:00</published><updated>2008-03-11T09:59:35.270-07:00</updated><title type='text'>how do you delete duplicates rows from a table</title><content type='html'>&lt;span style="font-weight: bold;"&gt;1.&lt;/span&gt; &lt;span style="font-weight: bold;"&gt; copy the structure of base_temp into temp_table&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;select * into temp_table from base_temp where 1=0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2.&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;create a unique index on the columns that contains the duplicate rows with the ignore_dup_key attribute .this may be more columns the key for the table.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Create unique index temp_idx on temp_table(col1,col2…..) with igmore_dup_key&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Now insert base_table into temp_table&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Insert temp_table select * from base_table &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Truncate the base table and copy the data in temp_table to base_table&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-8753366872975359278?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/8753366872975359278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=8753366872975359278' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/8753366872975359278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/8753366872975359278'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/how-do-you-delete-duplicates-rows-from.html' title='how do you delete duplicates rows from a table'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-8361140311421632600</id><published>2008-03-10T03:06:00.003-07:00</published><updated>2008-03-11T10:01:14.327-07:00</updated><title type='text'>what are joins and what are the types of join</title><content type='html'>&lt;span style="font-weight: bold;"&gt;join links two or more tables by comparing values in specified columns different types of joins are&lt;/span&gt;&lt;br /&gt;1. Equi join/inner join&lt;br /&gt;2. Natural join&lt;br /&gt;3. Outer join&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-8361140311421632600?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/8361140311421632600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=8361140311421632600' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/8361140311421632600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/8361140311421632600'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/what-are-joins-and-what-are-types-of.html' title='what are joins and what are the types of join'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-6793284157696810693</id><published>2008-03-10T03:06:00.001-07:00</published><updated>2008-03-10T03:06:21.015-07:00</updated><title type='text'>can we use aggregate function in the “where clause”</title><content type='html'>No However the aggregate functions can be used in a having clause.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-6793284157696810693?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/6793284157696810693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=6793284157696810693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/6793284157696810693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/6793284157696810693'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/can-we-use-aggregate-function-in-where.html' title='can we use aggregate function in the “where clause”'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-1430460317653535965</id><published>2008-03-10T03:05:00.002-07:00</published><updated>2008-03-10T03:06:04.079-07:00</updated><title type='text'>what is a cursor ? whay do you need cursor.</title><content type='html'>Cursor is a symbolic name that is associated with t-sql select statement through a declarative statement it consist of following parts.&lt;br /&gt;• Cursor result set-a set of row resulting from the excecution of a query assosicated with the cursor.&lt;br /&gt;• Cursor position –pointer to one row within the cursor result set.&lt;br /&gt;• Cursor can be used to access data row by row.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-1430460317653535965?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/1430460317653535965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=1430460317653535965' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/1430460317653535965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/1430460317653535965'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/what-is-cursor-whay-do-you-need-cursor.html' title='what is a cursor ? whay do you need cursor.'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-6223683391934859843</id><published>2008-03-10T03:05:00.001-07:00</published><updated>2008-03-11T10:03:21.246-07:00</updated><title type='text'>what are the ypes of locking available in Sybase.</title><content type='html'>&lt;li&gt;Page Locak&lt;br /&gt;&lt;li&gt;Shared Lock&lt;br /&gt;&lt;li&gt;Exclusive Lock&lt;br /&gt;&lt;li&gt;Table Lock&lt;br /&gt;&lt;li&gt;Intent Lock&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-6223683391934859843?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/6223683391934859843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=6223683391934859843' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/6223683391934859843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/6223683391934859843'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/what-are-ypes-of-locking-available-in.html' title='what are the ypes of locking available in Sybase.'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-3446978085334171754</id><published>2008-03-10T03:04:00.000-07:00</published><updated>2008-03-10T03:05:16.830-07:00</updated><title type='text'>what is bcp</title><content type='html'>bcp is a unix bulk copy utility used to transfer data from file to table and vice versa.&lt;br /&gt;Ex&lt;br /&gt;1.bcp dbname..tablename out pub_out –c –t ,-r userid –servername&lt;br /&gt;user will be prompted for database password.&lt;br /&gt;In the above example the data from publisher’s table present in pubs2 database is copied to physical file pub_out&lt;br /&gt;2&lt;br /&gt;-c option copies out the data from publisher table in character format&lt;br /&gt;-t option terminator ends each field with comma.&lt;br /&gt;-r row terminator ends each field with return&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2.bcp..tablename in pub-out –c –t, -r userid –servername&lt;br /&gt;&lt;br /&gt;user will be prompted for database password&lt;br /&gt;above example 2 shows how to copy the data into adaptive server.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-3446978085334171754?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/3446978085334171754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=3446978085334171754' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/3446978085334171754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/3446978085334171754'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/what-is-bcp.html' title='what is bcp'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1661902421469144975.post-3592171136561162669</id><published>2008-03-09T22:09:00.000-07:00</published><updated>2008-03-09T22:10:53.175-07:00</updated><title type='text'>How do you delete all records from the file that has 1 million records when the transaction log is full</title><content type='html'>Use Truncate instead of delete.as this is a minimally logged operation,there may be just enough &lt;br /&gt;space in the transaction log to do the operation.truncate  log only the datapage de-allocation not the deletion&lt;br /&gt;of individual records.it is not a non-logged operation&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1661902421469144975-3592171136561162669?l=sqlservercodebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlservercodebook.blogspot.com/feeds/3592171136561162669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1661902421469144975&amp;postID=3592171136561162669' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/3592171136561162669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1661902421469144975/posts/default/3592171136561162669'/><link rel='alternate' type='text/html' href='http://sqlservercodebook.blogspot.com/2008/03/how-do-you-delete-all-records-from-file.html' title='How do you delete all records from the file that has 1 million records when the transaction log is full'/><author><name>santosh</name><uri>http://www.blogger.com/profile/02203701869158926800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/-MdBLhEYPctM/TqhSXfg2iCI/AAAAAAAACWg/LW8q_c3lthw/s220/facebook.jpg'/></author><thr:total>1</thr:total></entry></feed>
