<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Desafio T-SQL – CHAR X VARCHAR</title>
	<atom:link href="http://silasmendes.com/dba/desafio-sql/feed" rel="self" type="application/rss+xml" />
	<link>http://silasmendes.com/dba/desafio-sql</link>
	<description>Tecnologia &#38; Banco de Dados</description>
	<lastBuildDate>Wed, 01 Feb 2012 23:29:21 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Daniel Ribeiro</title>
		<link>http://silasmendes.com/dba/desafio-sql/comment-page-1#comment-297</link>
		<dc:creator>Daniel Ribeiro</dc:creator>
		<pubDate>Thu, 09 Sep 2010 18:37:19 +0000</pubDate>
		<guid isPermaLink="false">http://silasmendes.com/dba/?p=531#comment-297</guid>
		<description>Na minha opinião é o seguinte...
Variaveis do tipo CHAR(n) recebem sempre o numero exato de caracteres do (n) e devem ser utilizadas sempre que voce tem certeza do numero de caracteres que serão inseridos nesta variavel, portanto a informação &#039;5&#039; fica como &#039;5 &#039;.
&quot;Use char when the sizes of the column data entries are consistent.&quot;&lt;-- BooksOnline

Enquanto o VARCHAR(n) deve ser utilizado sempre que a quantidade de caracteres do (n) for desconhecida, tendo o (n) como tamanho maximo somente, com isso o SQL ajusta o tamanho da variavel sempre deixando a informação &#039;5&#039; como &#039;5&#039; mesmo.
Use varchar when the sizes of the column data entries vary considerably. &lt;-- Books Online

Se voce alterar o Valor do RIGHT para 3 vai ter como resultado &#039;05 &#039; na variavel CHAR
SELECT RIGHT(&#039;0&#039; + CONVERT(   CHAR(2), DATEPART(mi, @data)), 3) [CHAR]</description>
		<content:encoded><![CDATA[<p>Na minha opinião é o seguinte&#8230;<br />
Variaveis do tipo CHAR(n) recebem sempre o numero exato de caracteres do (n) e devem ser utilizadas sempre que voce tem certeza do numero de caracteres que serão inseridos nesta variavel, portanto a informação &#8217;5&#8242; fica como &#8217;5 &#8216;.<br />
&#8220;Use char when the sizes of the column data entries are consistent.&#8221;&lt;&#8211; BooksOnline</p>
<p>Enquanto o VARCHAR(n) deve ser utilizado sempre que a quantidade de caracteres do (n) for desconhecida, tendo o (n) como tamanho maximo somente, com isso o SQL ajusta o tamanho da variavel sempre deixando a informação &#039;5&#039; como &#039;5&#039; mesmo.<br />
Use varchar when the sizes of the column data entries vary considerably. &lt;&#8211; Books Online</p>
<p>Se voce alterar o Valor do RIGHT para 3 vai ter como resultado &#039;05 &#039; na variavel CHAR<br />
SELECT RIGHT(&#039;0&#039; + CONVERT(   CHAR(2), DATEPART(mi, @data)), 3) [CHAR]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: eduardo</title>
		<link>http://silasmendes.com/dba/desafio-sql/comment-page-1#comment-126</link>
		<dc:creator>eduardo</dc:creator>
		<pubDate>Thu, 11 Mar 2010 11:08:05 +0000</pubDate>
		<guid isPermaLink="false">http://silasmendes.com/dba/?p=531#comment-126</guid>
		<description>Vamos lá: a expressão varchar antes do RIGHT seria &#039;5&#039; e a char &#039;5 &#039;, concatenando &#039;0&#039; ficariam &#039;05&#039; e &#039;05 &#039;. Utilizando RIGHT de duas posições, então o varchar retorna &#039;05&#039; e char &#039;5 &#039;. Para o retorno correto principalmente para minuto com apenas 1 dígito é ideal usar o tipo VARCHAR por suprimir espaços em brancos, já que estamos querendo obter sempre 2 posições.</description>
		<content:encoded><![CDATA[<p>Vamos lá: a expressão varchar antes do RIGHT seria &#8217;5&#8242; e a char &#8217;5 &#8216;, concatenando &#8217;0&#8242; ficariam &#8217;05&#8242; e &#8217;05 &#8216;. Utilizando RIGHT de duas posições, então o varchar retorna &#8217;05&#8242; e char &#8217;5 &#8216;. Para o retorno correto principalmente para minuto com apenas 1 dígito é ideal usar o tipo VARCHAR por suprimir espaços em brancos, já que estamos querendo obter sempre 2 posições.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joana Duarte</title>
		<link>http://silasmendes.com/dba/desafio-sql/comment-page-1#comment-127</link>
		<dc:creator>Joana Duarte</dc:creator>
		<pubDate>Thu, 11 Mar 2010 07:32:52 +0000</pubDate>
		<guid isPermaLink="false">http://silasmendes.com/dba/?p=531#comment-127</guid>
		<description>a questão nao é o char ou varchar, mas sim o right.</description>
		<content:encoded><![CDATA[<p>a questão nao é o char ou varchar, mas sim o right.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Marcos Vinicius</title>
		<link>http://silasmendes.com/dba/desafio-sql/comment-page-1#comment-128</link>
		<dc:creator>Marcos Vinicius</dc:creator>
		<pubDate>Thu, 11 Mar 2010 00:31:06 +0000</pubDate>
		<guid isPermaLink="false">http://silasmendes.com/dba/?p=531#comment-128</guid>
		<description>Porque o Right? Ou aposto no no armazenamento do dado no datatype, vou testar mais!</description>
		<content:encoded><![CDATA[<p>Porque o Right? Ou aposto no no armazenamento do dado no datatype, vou testar mais!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Fabricio França Lima</title>
		<link>http://silasmendes.com/dba/desafio-sql/comment-page-1#comment-125</link>
		<dc:creator>Fabricio França Lima</dc:creator>
		<pubDate>Wed, 10 Mar 2010 23:18:22 +0000</pubDate>
		<guid isPermaLink="false">http://silasmendes.com/dba/?p=531#comment-125</guid>
		<description>Utilizando  o left o resultado é o mesmo &#039;05&#039; para char e varchar.  

LEFT de  0 + char(2): ele &quot;converte&quot; o char(2) para char(1) e retorna o 5 como o segundo caracter a partir da esquerda ???

RIGTH de 0 + char(2): ele não &quot;converte&quot; o char(2) para char(1) e só retorna o 5 como se fossem 2 caracteres a partir da direita??

Algo parecido? To curioso...


declare @data datetime
set @data = &#039;20100310 05:05:05&#039;

SELECT
RIGHT(&#039;0&#039; + CONVERT(   CHAR(2), DATEPART(mi, @data)), 2) as &#039;CHAR&#039;,

RIGHT(&#039;0&#039; + CONVERT(VARCHAR(2), DATEPART(mi, @data)), 2) as &#039;VARCHAR&#039;,

LEFT(&#039;0&#039; + CONVERT(   CHAR(2), DATEPART(mi, @data)), 2) as &#039;CHAR&#039;,

LEFT(&#039;0&#039; + CONVERT(VARCHAR(2), DATEPART(mi, @data)), 2) as &#039;VARCHAR&#039;</description>
		<content:encoded><![CDATA[<p>Utilizando  o left o resultado é o mesmo &#8217;05&#8242; para char e varchar.  </p>
<p>LEFT de  0 + char(2): ele &#8220;converte&#8221; o char(2) para char(1) e retorna o 5 como o segundo caracter a partir da esquerda ???</p>
<p>RIGTH de 0 + char(2): ele não &#8220;converte&#8221; o char(2) para char(1) e só retorna o 5 como se fossem 2 caracteres a partir da direita??</p>
<p>Algo parecido? To curioso&#8230;</p>
<p>declare @data datetime<br />
set @data = &#8217;20100310 05:05:05&#8242;</p>
<p>SELECT<br />
RIGHT(&#8217;0&#8242; + CONVERT(   CHAR(2), DATEPART(mi, @data)), 2) as &#8216;CHAR&#8217;,</p>
<p>RIGHT(&#8217;0&#8242; + CONVERT(VARCHAR(2), DATEPART(mi, @data)), 2) as &#8216;VARCHAR&#8217;,</p>
<p>LEFT(&#8217;0&#8242; + CONVERT(   CHAR(2), DATEPART(mi, @data)), 2) as &#8216;CHAR&#8217;,</p>
<p>LEFT(&#8217;0&#8242; + CONVERT(VARCHAR(2), DATEPART(mi, @data)), 2) as &#8216;VARCHAR&#8217;</p>
]]></content:encoded>
	</item>
</channel>
</rss>

