<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.opensourcec.org/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>.NET Tweeks</title><link>http://www.opensourcec.org/blogs/dotnet_tweeks/default.aspx</link><description>This blog is dedicated to providing developers with code snipits and ideas that they might otherwise not be aware of.</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Mini-Tweek: customErrors in ASP.NET</title><link>http://www.opensourcec.org/blogs/dotnet_tweeks/archive/2009/07/04/4356.aspx</link><pubDate>Sun, 05 Jul 2009 02:38:00 GMT</pubDate><guid isPermaLink="false">c046f96d-eac7-4ec7-b575-b2e640ad3b48:4356</guid><dc:creator>Bill Bosacker</dc:creator><slash:comments>0</slash:comments><comments>http://www.opensourcec.org/blogs/dotnet_tweeks/archive/2009/07/04/4356.aspx#comments</comments><description>As of the latest .NET Service Pack (3.5 SP1, 3.0 SP2, 2.0 SP2) there is a new attribute for the &amp;lt;customErrors&amp;gt; element of your web.config, redirectMode . It has 2 settings, ResponseRedirect (default, legacy functionality), and ResponseRewrite (new...(&lt;a href="http://www.opensourcec.org/blogs/dotnet_tweeks/archive/2009/07/04/4356.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://www.opensourcec.org/aggbug.aspx?PostID=4356" width="1" height="1"&gt;</description></item><item><title>ASP.NET Tweeks (Part 1): PageBase</title><link>http://www.opensourcec.org/blogs/dotnet_tweeks/archive/2009/07/02/4345.aspx</link><pubDate>Thu, 02 Jul 2009 19:30:00 GMT</pubDate><guid isPermaLink="false">c046f96d-eac7-4ec7-b575-b2e640ad3b48:4345</guid><dc:creator>Bill Bosacker</dc:creator><slash:comments>0</slash:comments><comments>http://www.opensourcec.org/blogs/dotnet_tweeks/archive/2009/07/02/4345.aspx#comments</comments><description>Modularity is the heart of any application. This is the first of a multi-part part series of Tweeks that you can use while writing a modular ASP.NET application. The first module on the list is the use of a PageBase object. The PageBase class derives...(&lt;a href="http://www.opensourcec.org/blogs/dotnet_tweeks/archive/2009/07/02/4345.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://www.opensourcec.org/aggbug.aspx?PostID=4345" width="1" height="1"&gt;</description></item><item><title>.NET Tweek (June 24, 2009)</title><link>http://www.opensourcec.org/blogs/dotnet_tweeks/archive/2009/06/24/4328.aspx</link><pubDate>Wed, 24 Jun 2009 07:00:00 GMT</pubDate><guid isPermaLink="false">c046f96d-eac7-4ec7-b575-b2e640ad3b48:4328</guid><dc:creator>Bill Bosacker</dc:creator><slash:comments>0</slash:comments><comments>http://www.opensourcec.org/blogs/dotnet_tweeks/archive/2009/06/24/4328.aspx#comments</comments><description>&lt;p&gt;&lt;span style="color:#0000ff;"&gt;&lt;strong&gt;&lt;span style="font-size:medium;"&gt;How To: Extract ASP.NET Membership profile properties in SQL Server 2008 T-SQL&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Man, that title is a mouthful, but it works.&amp;nbsp; There are other posts on this that work with all versions of SQL Server, but this is my take with a bonus.&amp;nbsp; I have created a second function for the extraction of binary values, for those that need them.&amp;nbsp; This code uses&amp;nbsp;some new functionalities of SQL Server 2008 and will not work as written on previous versions of SQL Server.&amp;nbsp; Also, all of the other posts out there are not 100%&amp;nbsp;compiant with the format.&amp;nbsp; They don&amp;#39;t convert a value with a&amp;nbsp;length of -1 to a NULL.&amp;nbsp; Here is the script to return strings:&lt;/p&gt;
&lt;pre&gt;&lt;blockquote style="overflow-x: scroll;"&gt;&lt;pre style="margin: 0px;"&gt;
&lt;span style="color:#008000;"&gt;/****** Object: UserDefinedFunction [dbo].[fn_GetProfileStringElement] ******/&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;IF&lt;/span&gt;&amp;nbsp;&lt;span style="color:#808080;"&gt;EXISTS(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;SELECT&lt;/span&gt; &lt;span style="color:#808080;"&gt;*&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;FROM&lt;/span&gt; [sys]&lt;span style="color:#808080;"&gt;.&lt;/span&gt;[objects] &lt;span style="color:#0000ff;"&gt;WHERE&lt;/span&gt; [object_id] &lt;span style="color:#808080;"&gt;=&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;OBJECT_ID&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;N&amp;#39;[dbo].[fn_GetProfileStringElement]&amp;#39;&lt;/span&gt;&lt;span style="color:#808080;"&gt;)&lt;/span&gt; &lt;span style="color:#808080;"&gt;AND&lt;/span&gt; [type] &lt;span style="color:#808080;"&gt;IN&lt;/span&gt; &lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;N&amp;#39;FN&amp;#39;&lt;/span&gt;&lt;span style="color:#808080;"&gt;,&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;N&amp;#39;IF&amp;#39;&lt;/span&gt;&lt;span style="color:#808080;"&gt;,&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;N&amp;#39;TF&amp;#39;&lt;/span&gt;&lt;span style="color:#808080;"&gt;,&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;N&amp;#39;FS&amp;#39;&lt;/span&gt;&lt;span style="color:#808080;"&gt;,&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;N&amp;#39;FT&amp;#39;&lt;/span&gt;&lt;span style="color:#808080;"&gt;))&lt;/span&gt;
	&lt;span style="color:#0000ff;"&gt;DROP FUNCTION&lt;/span&gt; [dbo]&lt;span style="color:#808080;"&gt;.&lt;/span&gt;[fn_GetProfileStringElement]&lt;span style="color:#808080;"&gt;;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;GO&lt;/span&gt;

&lt;span style="color:#0000ff;"&gt;SET ANSI_NULLS ON&lt;/span&gt;&lt;span style="color:#808080;"&gt;;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;GO&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;SET QUOTED_IDENTIFIER OFF&lt;/span&gt;&lt;span style="color:#808080;"&gt;;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;GO&lt;/span&gt;
&lt;span style="color:#008000;"&gt;/******************************************************************************
** Schema: dbo
** Name: fn_GetProfileStringElement
** Desc:
**
** Auth: William Bosacker
** Date: 06/22/2009
**
** Parameters:
** ---------------------------------------------------------------------------
**
**
** Returns:
** ---------------------------------------------------------------------------
**
******************************************************************************/

&lt;span style="color:#0000ff;"&gt;CREATE FUNCTION&lt;/span&gt; [dbo]&lt;span style="color:#808080;"&gt;.&lt;/span&gt;[fn_GetProfileStringElement]&lt;/span&gt; &lt;span style="color:#808080;"&gt;(&lt;/span&gt;
	@PropertyName &lt;span style="color:#0000ff;"&gt;nvarchar&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;256&lt;span style="color:#808080;"&gt;),&lt;/span&gt;
	@PropertyNames &lt;span style="color:#0000ff;"&gt;nvarchar&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;max&lt;/span&gt;&lt;span style="color:#808080;"&gt;),&lt;/span&gt;
	@PropertyValuesString &lt;span style="color:#0000ff;"&gt;nvarchar&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;max&lt;/span&gt;&lt;span style="color:#808080;"&gt;)
)&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;RETURNS nvarchar&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;max&lt;/span&gt;&lt;span style="color:#808080;"&gt;)&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;AS
BEGIN&lt;/span&gt;
	&lt;span style="color:#0000ff;"&gt;DECLARE&lt;/span&gt; @SearchString &lt;span style="color:#0000ff;"&gt;nvarchar&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;259&lt;span style="color:#808080;"&gt;);&lt;/span&gt;
	&lt;span style="color:#0000ff;"&gt;DECLARE&lt;/span&gt; @LeftPointer &lt;span style="color:#0000ff;"&gt;bigint&lt;/span&gt;&lt;span style="color:#808080;"&gt;;&lt;/span&gt;
	&lt;span style="color:#0000ff;"&gt;DECLARE&lt;/span&gt; @RightPointer &lt;span style="color:#0000ff;"&gt;bigint&lt;/span&gt;&lt;span style="color:#808080;"&gt;;&lt;/span&gt;
	&lt;span style="color:#0000ff;"&gt;DECLARE&lt;/span&gt; @ValueStart &lt;span style="color:#0000ff;"&gt;bigint&lt;/span&gt;&lt;span style="color:#808080;"&gt;;&lt;/span&gt;
	&lt;span style="color:#0000ff;"&gt;DECLARE&lt;/span&gt; @ValueLength &lt;span style="color:#0000ff;"&gt;bigint&lt;/span&gt;&lt;span style="color:#808080;"&gt;;&lt;/span&gt;


	&lt;span style="color:#0000ff;"&gt;IF&lt;/span&gt; @PropertyName &lt;span style="color:#808080;"&gt;IS&lt;/span&gt; &lt;span style="color:#808080;"&gt;NULL&lt;/span&gt; &lt;span style="color:#808080;"&gt;OR&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;LEN&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;@PropertyName&lt;span style="color:#808080;"&gt;)&lt;/span&gt; &lt;span style="color:#808080;"&gt;=&lt;/span&gt; 0 
		&lt;span style="color:#808080;"&gt;OR&lt;/span&gt; @PropertyNames &lt;span style="color:#808080;"&gt;IS&lt;/span&gt; &lt;span style="color:#808080;"&gt;NULL&lt;/span&gt; &lt;span style="color:#808080;"&gt;OR&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;LEN&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;@PropertyNames&lt;span style="color:#808080;"&gt;)&lt;/span&gt; &lt;span style="color:#808080;"&gt;=&lt;/span&gt; 0 
		&lt;span style="color:#808080;"&gt;OR&lt;/span&gt; @PropertyValuesString &lt;span style="color:#808080;"&gt;IS&lt;/span&gt; &lt;span style="color:#808080;"&gt;NULL&lt;/span&gt; &lt;span style="color:#808080;"&gt;OR&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;LEN&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;@PropertyValuesString&lt;span style="color:#808080;"&gt;)&lt;/span&gt; &lt;span style="color:#808080;"&gt;=&lt;/span&gt; 0 
	&lt;span style="color:#0000ff;"&gt;BEGIN&lt;/span&gt;
		&lt;span style="color:#0000ff;"&gt;RETURN&lt;/span&gt; &lt;span style="color:#808080;"&gt;NULL;&lt;/span&gt;
	&lt;span style="color:#0000ff;"&gt;END&lt;/span&gt;&lt;span style="color:#808080;"&gt;;&lt;/span&gt;


	&lt;span style="color:#0000ff;"&gt;SET&lt;/span&gt; @SearchString &lt;span style="color:#808080;"&gt;=&lt;/span&gt; @PropertyName &lt;span style="color:#808080;"&gt;+&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&amp;#39;:S:&amp;#39;&lt;/span&gt;&lt;span style="color:#808080;"&gt;;&lt;/span&gt;
	&lt;span style="color:#0000ff;"&gt;SET&lt;/span&gt; @LeftPointer &lt;span style="color:#808080;"&gt;=&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;CHARINDEX&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;@SearchString&lt;span style="color:#808080;"&gt;,&lt;/span&gt; @PropertyNames&lt;span style="color:#808080;"&gt;,&lt;/span&gt; 0&lt;span style="color:#808080;"&gt;);&lt;/span&gt;

	&lt;span style="color:#0000ff;"&gt;IF&lt;/span&gt; @LeftPointer &lt;span style="color:#808080;"&gt;!=&lt;/span&gt; 0
	&lt;span style="color:#0000ff;"&gt;BEGIN&lt;/span&gt;
		&lt;span style="color:#008000;"&gt;-- Find the starting position of the value.&lt;/span&gt;
		&lt;span style="color:#0000ff;"&gt;SET&lt;/span&gt; @LeftPointer &lt;span style="color:#808080;"&gt;=&lt;/span&gt; @LeftPointer &lt;span style="color:#808080;"&gt;+&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;LEN&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;@SearchString&lt;span style="color:#808080;"&gt;);&lt;/span&gt;
		&lt;span style="color:#0000ff;"&gt;SET&lt;/span&gt; @RightPointer &lt;span style="color:#808080;"&gt;=&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;CHARINDEX&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&amp;#39;:&amp;#39;&lt;/span&gt;&lt;span style="color:#808080;"&gt;,&lt;/span&gt; @PropertyNames&lt;span style="color:#808080;"&gt;,&lt;/span&gt; @LeftPointer&lt;span style="color:#808080;"&gt;);&lt;/span&gt;
		&lt;span style="color:#0000ff;"&gt;SET&lt;/span&gt; @ValueStart &lt;span style="color:#808080;"&gt;=&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;CAST&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;SUBSTRING&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;@PropertyNames&lt;span style="color:#808080;"&gt;,&lt;/span&gt; @LeftPointer&lt;span style="color:#808080;"&gt;,&lt;/span&gt; @RightPointer &lt;span style="color:#808080;"&gt;-&lt;/span&gt; @LeftPointer&lt;span style="color:#808080;"&gt;)&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;AS bigint&lt;/span&gt;&lt;span style="color:#808080;"&gt;);&lt;/span&gt;

		&lt;span style="color:#008000;"&gt;-- Find the length of the value.&lt;/span&gt;
		&lt;span style="color:#0000ff;"&gt;SET&lt;/span&gt; @LeftPointer &lt;span style="color:#808080;"&gt;=&lt;/span&gt; @RightPointer &lt;span style="color:#808080;"&gt;+&lt;/span&gt; 1&lt;span style="color:#808080;"&gt;;&lt;/span&gt;
		&lt;span style="color:#0000ff;"&gt;SET&lt;/span&gt; @RightPointer &lt;span style="color:#808080;"&gt;=&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;CHARINDEX&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&amp;#39;:&amp;#39;&lt;/span&gt;&lt;span style="color:#808080;"&gt;,&lt;/span&gt; @PropertyNames&lt;span style="color:#808080;"&gt;,&lt;/span&gt; @LeftPointer&lt;span style="color:#808080;"&gt;);&lt;/span&gt;
		&lt;span style="color:#0000ff;"&gt;SET&lt;/span&gt; @ValueLength &lt;span style="color:#808080;"&gt;=&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;CAST&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;SUBSTRING&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;@PropertyNames&lt;span style="color:#808080;"&gt;,&lt;/span&gt; @LeftPointer&lt;span style="color:#808080;"&gt;,&lt;/span&gt; @RightPointer &lt;span style="color:#808080;"&gt;-&lt;/span&gt; @LeftPointer&lt;span style="color:#808080;"&gt;)&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;AS bigint&lt;/span&gt;&lt;span style="color:#808080;"&gt;);&lt;/span&gt;

		&lt;span style="color:#0000ff;"&gt;IF&lt;/span&gt; @ValueLength &lt;span style="color:#808080;"&gt;=&lt;/span&gt; &lt;span style="color:#808080;"&gt;-&lt;/span&gt;1
		&lt;span style="color:#0000ff;"&gt;BEGIN&lt;/span&gt;
			&lt;span style="color:#0000ff;"&gt;RETURN&lt;/span&gt; &lt;span style="color:#808080;"&gt;NULL;&lt;/span&gt;
		&lt;span style="color:#0000ff;"&gt;END&lt;/span&gt;&lt;span style="color:#808080;"&gt;;&lt;/span&gt;

		&lt;span style="color:#0000ff;"&gt;RETURN&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;SUBSTRING&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;@PropertyValuesString&lt;span style="color:#808080;"&gt;,&lt;/span&gt; @ValueStart &lt;span style="color:#808080;"&gt;+&lt;/span&gt; 1&lt;span style="color:#808080;"&gt;,&lt;/span&gt; @ValueLength&lt;span style="color:#808080;"&gt;);&lt;/span&gt;
	&lt;span style="color:#0000ff;"&gt;END&lt;/span&gt;&lt;span style="color:#808080;"&gt;;&lt;/span&gt;


	&lt;span style="color:#0000ff;"&gt;RETURN&lt;/span&gt; &lt;span style="color:#808080;"&gt;NULL;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;END&lt;/span&gt;&lt;span style="color:#808080;"&gt;;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;GO&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/pre&gt;
&lt;p&gt;Here is the script to return binary values:&lt;/p&gt;
&lt;pre&gt;&lt;blockquote style="overflow-x: scroll;"&gt;&lt;pre style="margin: 0px;"&gt;
&lt;span style="color:#008000;"&gt;/****** Object: UserDefinedFunction [dbo].[fn_GetProfileBinaryElement] ******/&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;IF&lt;/span&gt;&amp;nbsp;&lt;span style="color:#808080;"&gt;EXISTS(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;SELECT&lt;/span&gt; &lt;span style="color:#808080;"&gt;*&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;FROM&lt;/span&gt; [sys]&lt;span style="color:#808080;"&gt;.&lt;/span&gt;[objects] &lt;span style="color:#0000ff;"&gt;WHERE&lt;/span&gt; [object_id] &lt;span style="color:#808080;"&gt;=&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;OBJECT_ID&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;N&amp;#39;[dbo].[fn_GetProfileBinaryElement]&amp;#39;&lt;/span&gt;&lt;span style="color:#808080;"&gt;)&lt;/span&gt; &lt;span style="color:#808080;"&gt;AND&lt;/span&gt; [type] &lt;span style="color:#808080;"&gt;IN&lt;/span&gt; &lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;N&amp;#39;FN&amp;#39;&lt;/span&gt;&lt;span style="color:#808080;"&gt;,&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;N&amp;#39;IF&amp;#39;&lt;/span&gt;&lt;span style="color:#808080;"&gt;,&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;N&amp;#39;TF&amp;#39;&lt;/span&gt;&lt;span style="color:#808080;"&gt;,&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;N&amp;#39;FS&amp;#39;&lt;/span&gt;&lt;span style="color:#808080;"&gt;,&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;N&amp;#39;FT&amp;#39;&lt;/span&gt;&lt;span style="color:#808080;"&gt;))&lt;/span&gt;
	&lt;span style="color:#0000ff;"&gt;DROP FUNCTION&lt;/span&gt; [dbo]&lt;span style="color:#808080;"&gt;.&lt;/span&gt;[fn_GetProfileBinaryElement]&lt;span style="color:#808080;"&gt;;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;GO&lt;/span&gt;

&lt;span style="color:#0000ff;"&gt;SET ANSI_NULLS ON&lt;/span&gt;&lt;span style="color:#808080;"&gt;;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;GO&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;SET QUOTED_IDENTIFIER OFF&lt;/span&gt;&lt;span style="color:#808080;"&gt;;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;GO&lt;/span&gt;
&lt;span style="color:#008000;"&gt;/******************************************************************************
** Schema: dbo
** Name: fn_GetProfileBinaryElement
** Desc:
**
** Auth: William Bosacker
** Date: 06/22/2009
**
** Parameters:
** ---------------------------------------------------------------------------
**
**
** Returns:
** ---------------------------------------------------------------------------
**
******************************************************************************/

&lt;span style="color:#0000ff;"&gt;CREATE FUNCTION&lt;/span&gt; [dbo]&lt;span style="color:#808080;"&gt;.&lt;/span&gt;[fn_GetProfileBinaryElement]&lt;/span&gt; &lt;span style="color:#808080;"&gt;(&lt;/span&gt;
	@PropertyName &lt;span style="color:#0000ff;"&gt;nvarchar&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;256&lt;span style="color:#808080;"&gt;),&lt;/span&gt;
	@PropertyNames &lt;span style="color:#0000ff;"&gt;nvarchar&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;max&lt;/span&gt;&lt;span style="color:#808080;"&gt;),&lt;/span&gt;
	@PropertyValuesBinary &lt;span style="color:#0000ff;"&gt;varbinary&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;max&lt;/span&gt;&lt;span style="color:#808080;"&gt;)
)&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;RETURNS varbinary&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;max&lt;/span&gt;&lt;span style="color:#808080;"&gt;)&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;AS
BEGIN&lt;/span&gt;
	&lt;span style="color:#0000ff;"&gt;DECLARE&lt;/span&gt; @SearchString &lt;span style="color:#0000ff;"&gt;nvarchar&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;259&lt;span style="color:#808080;"&gt;);&lt;/span&gt;
	&lt;span style="color:#0000ff;"&gt;DECLARE&lt;/span&gt; @LeftPointer &lt;span style="color:#0000ff;"&gt;bigint&lt;/span&gt;&lt;span style="color:#808080;"&gt;;&lt;/span&gt;
	&lt;span style="color:#0000ff;"&gt;DECLARE&lt;/span&gt; @RightPointer &lt;span style="color:#0000ff;"&gt;bigint&lt;/span&gt;&lt;span style="color:#808080;"&gt;;&lt;/span&gt;
	&lt;span style="color:#0000ff;"&gt;DECLARE&lt;/span&gt; @ValueStart &lt;span style="color:#0000ff;"&gt;bigint&lt;/span&gt;&lt;span style="color:#808080;"&gt;;&lt;/span&gt;
	&lt;span style="color:#0000ff;"&gt;DECLARE&lt;/span&gt; @ValueLength &lt;span style="color:#0000ff;"&gt;bigint&lt;/span&gt;&lt;span style="color:#808080;"&gt;;&lt;/span&gt;


	&lt;span style="color:#0000ff;"&gt;IF&lt;/span&gt; @PropertyName &lt;span style="color:#808080;"&gt;IS&lt;/span&gt; &lt;span style="color:#808080;"&gt;NULL&lt;/span&gt; &lt;span style="color:#808080;"&gt;OR&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;LEN&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;@PropertyName&lt;span style="color:#808080;"&gt;)&lt;/span&gt; &lt;span style="color:#808080;"&gt;=&lt;/span&gt; 0 
		&lt;span style="color:#808080;"&gt;OR&lt;/span&gt; @PropertyNames &lt;span style="color:#808080;"&gt;IS&lt;/span&gt; &lt;span style="color:#808080;"&gt;NULL&lt;/span&gt; &lt;span style="color:#808080;"&gt;OR&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;LEN&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;@PropertyNames&lt;span style="color:#808080;"&gt;)&lt;/span&gt; &lt;span style="color:#808080;"&gt;=&lt;/span&gt; 0 
		&lt;span style="color:#808080;"&gt;OR&lt;/span&gt; @PropertyValuesBinary &lt;span style="color:#808080;"&gt;IS&lt;/span&gt; &lt;span style="color:#808080;"&gt;NULL&lt;/span&gt; &lt;span style="color:#808080;"&gt;OR&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;LEN&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;@PropertyValuesBinary&lt;span style="color:#808080;"&gt;)&lt;/span&gt; &lt;span style="color:#808080;"&gt;=&lt;/span&gt; 0 
	&lt;span style="color:#0000ff;"&gt;BEGIN&lt;/span&gt;
		&lt;span style="color:#0000ff;"&gt;RETURN&lt;/span&gt; &lt;span style="color:#808080;"&gt;NULL;&lt;/span&gt;
	&lt;span style="color:#0000ff;"&gt;END&lt;/span&gt;&lt;span style="color:#808080;"&gt;;&lt;/span&gt;


	&lt;span style="color:#0000ff;"&gt;SET&lt;/span&gt; @SearchString &lt;span style="color:#808080;"&gt;=&lt;/span&gt; @PropertyName &lt;span style="color:#808080;"&gt;+&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&amp;#39;:B:&amp;#39;&lt;/span&gt;&lt;span style="color:#808080;"&gt;;&lt;/span&gt;
	&lt;span style="color:#0000ff;"&gt;SET&lt;/span&gt; @LeftPointer &lt;span style="color:#808080;"&gt;=&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;CHARINDEX&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;@SearchString&lt;span style="color:#808080;"&gt;,&lt;/span&gt; @PropertyNames&lt;span style="color:#808080;"&gt;,&lt;/span&gt; 0&lt;span style="color:#808080;"&gt;);&lt;/span&gt;

	&lt;span style="color:#0000ff;"&gt;IF&lt;/span&gt; @LeftPointer &lt;span style="color:#808080;"&gt;!=&lt;/span&gt; 0
	&lt;span style="color:#0000ff;"&gt;BEGIN&lt;/span&gt;
		&lt;span style="color:#008000;"&gt;-- Find the starting position of the value.&lt;/span&gt;
		&lt;span style="color:#0000ff;"&gt;SET&lt;/span&gt; @LeftPointer &lt;span style="color:#808080;"&gt;=&lt;/span&gt; @LeftPointer &lt;span style="color:#808080;"&gt;+&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;LEN&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;@SearchString&lt;span style="color:#808080;"&gt;);&lt;/span&gt;
		&lt;span style="color:#0000ff;"&gt;SET&lt;/span&gt; @RightPointer &lt;span style="color:#808080;"&gt;=&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;CHARINDEX&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&amp;#39;:&amp;#39;&lt;/span&gt;&lt;span style="color:#808080;"&gt;,&lt;/span&gt; @PropertyNames&lt;span style="color:#808080;"&gt;,&lt;/span&gt; @LeftPointer&lt;span style="color:#808080;"&gt;);&lt;/span&gt;
		&lt;span style="color:#0000ff;"&gt;SET&lt;/span&gt; @ValueStart &lt;span style="color:#808080;"&gt;=&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;CAST&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;SUBSTRING&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;@PropertyNames&lt;span style="color:#808080;"&gt;,&lt;/span&gt; @LeftPointer&lt;span style="color:#808080;"&gt;,&lt;/span&gt; @RightPointer &lt;span style="color:#808080;"&gt;-&lt;/span&gt; @LeftPointer&lt;span style="color:#808080;"&gt;)&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;AS bigint&lt;/span&gt;&lt;span style="color:#808080;"&gt;);&lt;/span&gt;

		&lt;span style="color:#008000;"&gt;-- Find the length of the value.&lt;/span&gt;
		&lt;span style="color:#0000ff;"&gt;SET&lt;/span&gt; @LeftPointer &lt;span style="color:#808080;"&gt;=&lt;/span&gt; @RightPointer &lt;span style="color:#808080;"&gt;+&lt;/span&gt; 1&lt;span style="color:#808080;"&gt;;&lt;/span&gt;
		&lt;span style="color:#0000ff;"&gt;SET&lt;/span&gt; @RightPointer &lt;span style="color:#808080;"&gt;=&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;CHARINDEX&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&amp;#39;:&amp;#39;&lt;/span&gt;&lt;span style="color:#808080;"&gt;,&lt;/span&gt; @PropertyNames&lt;span style="color:#808080;"&gt;,&lt;/span&gt; @LeftPointer&lt;span style="color:#808080;"&gt;);&lt;/span&gt;
		&lt;span style="color:#0000ff;"&gt;SET&lt;/span&gt; @ValueLength &lt;span style="color:#808080;"&gt;=&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;CAST&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;SUBSTRING&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;@PropertyNames&lt;span style="color:#808080;"&gt;,&lt;/span&gt; @LeftPointer&lt;span style="color:#808080;"&gt;,&lt;/span&gt; @RightPointer &lt;span style="color:#808080;"&gt;-&lt;/span&gt; @LeftPointer&lt;span style="color:#808080;"&gt;)&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;AS bigint&lt;/span&gt;&lt;span style="color:#808080;"&gt;);&lt;/span&gt;

		&lt;span style="color:#0000ff;"&gt;IF&lt;/span&gt; @ValueLength &lt;span style="color:#808080;"&gt;=&lt;/span&gt; &lt;span style="color:#808080;"&gt;-&lt;/span&gt;1
		&lt;span style="color:#0000ff;"&gt;BEGIN&lt;/span&gt;
			&lt;span style="color:#0000ff;"&gt;RETURN&lt;/span&gt; &lt;span style="color:#808080;"&gt;NULL;&lt;/span&gt;
		&lt;span style="color:#0000ff;"&gt;END&lt;/span&gt;&lt;span style="color:#808080;"&gt;;&lt;/span&gt;

		&lt;span style="color:#0000ff;"&gt;RETURN&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;SUBSTRING&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;@PropertyValuesBinary&lt;span style="color:#808080;"&gt;,&lt;/span&gt; @ValueStart &lt;span style="color:#808080;"&gt;+&lt;/span&gt; 1&lt;span style="color:#808080;"&gt;,&lt;/span&gt; @ValueLength&lt;span style="color:#808080;"&gt;);&lt;/span&gt;
	&lt;span style="color:#0000ff;"&gt;END&lt;/span&gt;&lt;span style="color:#808080;"&gt;;&lt;/span&gt;


	&lt;span style="color:#0000ff;"&gt;RETURN&lt;/span&gt; &lt;span style="color:#808080;"&gt;NULL;&lt;/span&gt;
	&lt;span style="color:#0000ff;"&gt;END&lt;/span&gt;&lt;span style="color:#808080;"&gt;;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;GO&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/pre&gt;
&lt;p&gt;And last, but not least, here is a sample of how to use the functions:&lt;/p&gt;
&lt;pre&gt;&lt;blockquote style="overflow-x: scroll;"&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color:#0000ff;"&gt;SELECT&lt;/span&gt;
	U&lt;span style="color:#808080;"&gt;.&lt;/span&gt;[Username]&lt;span style="color:#808080;"&gt;,&lt;/span&gt;
	[dbo]&lt;span style="color:#808080;"&gt;.&lt;/span&gt;[fn_GetProfileStringElement]&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&amp;#39;FirstName&amp;#39;&lt;/span&gt;&lt;span style="color:#808080;"&gt;,&lt;/span&gt; P&lt;span style="color:#808080;"&gt;.&lt;/span&gt;[PropertyNames]&lt;span style="color:#808080;"&gt;,&lt;/span&gt; P&lt;span style="color:#808080;"&gt;.&lt;/span&gt;[PropertyValuesString]&lt;span style="color:#808080;"&gt;)&lt;/span&gt; [FirstName]&lt;span style="color:#808080;"&gt;,&lt;/span&gt;
	[dbo]&lt;span style="color:#808080;"&gt;.&lt;/span&gt;[fn_GetProfileStringElement]&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&amp;#39;LastName&amp;#39;&lt;/span&gt;&lt;span style="color:#808080;"&gt;,&lt;/span&gt; P&lt;span style="color:#808080;"&gt;.&lt;/span&gt;[PropertyNames]&lt;span style="color:#808080;"&gt;,&lt;/span&gt; P&lt;span style="color:#808080;"&gt;.&lt;/span&gt;[PropertyValuesString]&lt;span style="color:#808080;"&gt;)&lt;/span&gt; [LastName]&lt;span style="color:#808080;"&gt;,&lt;/span&gt;
	[dbo]&lt;span style="color:#808080;"&gt;.&lt;/span&gt;[fn_GetProfileBinaryElement]&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&amp;#39;Avatar&amp;#39;&lt;/span&gt;&lt;span style="color:#808080;"&gt;,&lt;/span&gt; P&lt;span style="color:#808080;"&gt;.&lt;/span&gt;[PropertyNames]&lt;span style="color:#808080;"&gt;,&lt;/span&gt; P&lt;span style="color:#808080;"&gt;.&lt;/span&gt;[PropertyValuesBinary]&lt;span style="color:#808080;"&gt;)&lt;/span&gt; [Avatar]
&lt;span style="color:#0000ff;"&gt;FROM&lt;/span&gt;
	[dbo]&lt;span style="color:#808080;"&gt;.&lt;/span&gt;[aspnet_Users] U
	&lt;span style="color:#808080;"&gt;JOIN&lt;/span&gt; [dbo]&lt;span style="color:#808080;"&gt;.&lt;/span&gt;[aspnet_Profile] P &lt;span style="color:#0000ff;"&gt;ON&lt;/span&gt; P&lt;span style="color:#808080;"&gt;.&lt;/span&gt;[UserId] &lt;span style="color:#808080;"&gt;=&lt;/span&gt; U&lt;span style="color:#808080;"&gt;.&lt;/span&gt;[UserId]&lt;/pre&gt;&lt;/blockquote&gt;&lt;/pre&gt;
&lt;p&gt;Posting code in this blog takes a lot of work, and it is possible that I screwed it up.&amp;nbsp; Please post a comment if you find a problem with the code.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.opensourcec.org/aggbug.aspx?PostID=4328" width="1" height="1"&gt;</description></item><item><title>JawberDoo.com: The story begins...</title><link>http://www.opensourcec.org/blogs/dotnet_tweeks/archive/2009/06/06/4351.aspx</link><pubDate>Sat, 06 Jun 2009 07:00:00 GMT</pubDate><guid isPermaLink="false">c046f96d-eac7-4ec7-b575-b2e640ad3b48:4351</guid><dc:creator>Bill Bosacker</dc:creator><slash:comments>0</slash:comments><comments>http://www.opensourcec.org/blogs/dotnet_tweeks/archive/2009/06/06/4351.aspx#comments</comments><description>Welcome to the first post of this new series. This has been a busy week. We&amp;#39;ve done quite a bit of work on the BeHeard.com site, primarily with the &amp;quot;Search&amp;quot; and &amp;quot;AutoComplete&amp;quot;. The detail pages aren&amp;#39;t ready yet, but they are...(&lt;a href="http://www.opensourcec.org/blogs/dotnet_tweeks/archive/2009/06/06/4351.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://www.opensourcec.org/aggbug.aspx?PostID=4351" width="1" height="1"&gt;</description></item></channel></rss>
