<?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/'><id>tag:blogger.com,1999:blog-29286778.post6731917437837879290..comments</id><updated>2008-07-29T14:01:13.446-04:00</updated><category term='Feature Creeper'/><category term='FAQs and not so FAQs'/><category term='SQL Puzzles'/><category term='Pass time with SQL'/><title type='text'>Comments on SQL Garbage Collector: A Scenario to Ponder #10</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.sqlpointers.com/feeds/6731917437837879290/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29286778/6731917437837879290/comments/default'/><link rel='alternate' type='text/html' href='http://www.sqlpointers.com/2006/11/scenario-to-ponder-10.html'/><author><name>Omnibuzz</name><uri>http://www.blogger.com/profile/04342835880399785393</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-29286778.post-7160219577139261336</id><published>2006-11-29T06:42:00.000-05:00</published><updated>2006-11-29T06:42:00.000-05:00</updated><title type='text'>All the solutions, that I can think of, will requi...</title><content type='html'>All the solutions, that I can think of, will require a calculated member calling a function as RJG had suggested. The following are just different flavors of what RJG has given.&lt;br /&gt;&lt;br /&gt;#1 using a while loop.&lt;br /&gt;CREATE function GetChar(@input int)&lt;br /&gt;returns varchar(10)&lt;br /&gt;as&lt;br /&gt;begin &lt;br /&gt;declare @output varchar(10)&lt;br /&gt;while @input &gt; 0&lt;br /&gt;select @output = char(64 + (@input-1)%26+1) + isnull(@output,''),@input= (@input-1)/26 &lt;br /&gt;return @output&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#2 using a recursive function&lt;br /&gt;create function getchar(@input int)&lt;br /&gt;returns varchar(10)&lt;br /&gt;as&lt;br /&gt;begin &lt;br /&gt;return case when @input=0 then '' else dbo.getchar((@input-1)/26) + char(64 + (@input-1)%26+1) end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;Performance wise, while loop is better than the recursive function. Maybe I will write a post on it sometime.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29286778/6731917437837879290/comments/default/7160219577139261336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29286778/6731917437837879290/comments/default/7160219577139261336'/><link rel='alternate' type='text/html' href='http://www.sqlpointers.com/2006/11/scenario-to-ponder-10.html?showComment=1164800520000#c7160219577139261336' title=''/><author><name>Omnibuzz</name><uri>http://www.blogger.com/profile/04342835880399785393</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sqlpointers.com/2006/11/scenario-to-ponder-10.html' ref='tag:blogger.com,1999:blog-29286778.post-6731917437837879290' source='http://www.blogger.com/feeds/29286778/posts/default/6731917437837879290' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-817797350'/></entry><entry><id>tag:blogger.com,1999:blog-29286778.post-3259035415157654758</id><published>2006-11-24T04:31:00.000-05:00</published><updated>2006-11-24T04:31:00.000-05:00</updated><title type='text'>Good One RJG (Too long a name you got)!  Your solu...</title><content type='html'>Good One RJG (Too long a name you got)!  Your solution has, probably, the best performance and maintainability anyone can get. &lt;br /&gt;And that would be my suggested approach if such a requirement ever comes my way.&lt;br /&gt;&lt;br /&gt;Now to the fun part, throwing maintainability out of the window, can you think how else would you write the function to save omni a bit more from typing.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29286778/6731917437837879290/comments/default/3259035415157654758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29286778/6731917437837879290/comments/default/3259035415157654758'/><link rel='alternate' type='text/html' href='http://www.sqlpointers.com/2006/11/scenario-to-ponder-10.html?showComment=1164360660000#c3259035415157654758' title=''/><author><name>Omnibuzz</name><uri>http://www.blogger.com/profile/04342835880399785393</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sqlpointers.com/2006/11/scenario-to-ponder-10.html' ref='tag:blogger.com,1999:blog-29286778.post-6731917437837879290' source='http://www.blogger.com/feeds/29286778/posts/default/6731917437837879290' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-817797350'/></entry><entry><id>tag:blogger.com,1999:blog-29286778.post-3332855721873836208</id><published>2006-11-24T03:21:00.000-05:00</published><updated>2006-11-24T03:21:00.000-05:00</updated><title type='text'>--Function that converts the identity value to cha...</title><content type='html'>--Function that converts the identity value to character&lt;br /&gt;CREATE FUNCTION dbo.GetCharIdentity(@idval int)&lt;br /&gt;RETURNS VARCHAR(20)&lt;br /&gt;AS&lt;br /&gt;BEGIN&lt;br /&gt;&lt;br /&gt;declare @rem int, @output varchar(10)&lt;br /&gt;select @output = ''&lt;br /&gt;&lt;br /&gt;while @idval &gt; 0&lt;br /&gt;begin&lt;br /&gt;select @rem = CASE WHEN @idval%26 = 0 THEN 26&lt;br /&gt;   ELSE @idval%26 END&lt;br /&gt;select @idval = CASE WHEN @rem = 26 THEN (@idval-1)/26&lt;br /&gt;   ELSE @idval/26 END&lt;br /&gt;select @output = char(@rem + 64) + @output&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;RETURN @output&lt;br /&gt;&lt;br /&gt;END&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--table definition&lt;br /&gt;CREATE TABLE [charidval] (&lt;br /&gt; [idval] [int] IDENTITY (1, 1) NOT NULL ,&lt;br /&gt; [charidval] AS ([dbo].[GetCharIdentity]([idval])) ,&lt;br /&gt; [somecolumn] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,&lt;br /&gt; CONSTRAINT [PK_charidval] PRIMARY KEY  CLUSTERED &lt;br /&gt; (&lt;br /&gt;  [idval]&lt;br /&gt; )  ON [PRIMARY] &lt;br /&gt;) ON [PRIMARY]&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--some random values inserted&lt;br /&gt;insert into charidval&lt;br /&gt;(somecolumn)&lt;br /&gt;SELECT ('OMNIBUZZ')&lt;br /&gt;UNION ALL&lt;br /&gt;SELECT ('SQL')&lt;br /&gt;UNION ALL&lt;br /&gt;SELECT ('GARBAGE')&lt;br /&gt;UNION ALL&lt;br /&gt;SELECT ('COLLECTOR')&lt;br /&gt;&lt;br /&gt;--lets save omni some typing&lt;br /&gt;select * from charidval&lt;br /&gt;&lt;br /&gt;--some more savings&lt;br /&gt;select 18281, dbo.GetCharIdentity(18281)&lt;br /&gt;UNION ALL&lt;br /&gt;select 705, dbo.GetCharIdentity(705)&lt;br /&gt;UNION ALL&lt;br /&gt;select 29, dbo.GetCharIdentity(29)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29286778/6731917437837879290/comments/default/3332855721873836208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29286778/6731917437837879290/comments/default/3332855721873836208'/><link rel='alternate' type='text/html' href='http://www.sqlpointers.com/2006/11/scenario-to-ponder-10.html?showComment=1164356460000#c3332855721873836208' title=''/><author><name>RandomJoblessGuy</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.sqlpointers.com/2006/11/scenario-to-ponder-10.html' ref='tag:blogger.com,1999:blog-29286778.post-6731917437837879290' source='http://www.blogger.com/feeds/29286778/posts/default/6731917437837879290' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-868027536'/></entry></feed>
