<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>La Cofradía Digital &#187; integer unsigned</title>
	<atom:link href="http://cofradia.org/tag/integer-unsigned/feed/" rel="self" type="application/rss+xml" />
	<link>http://cofradia.org</link>
	<description>Hermandad informática</description>
	<lastBuildDate>Sun, 20 May 2012 06:33:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>MySQL (no) sabe sumar números positivos</title>
		<link>http://cofradia.org/2009/01/07/mysql-no-sabe-sumar-numeros-positivos/</link>
		<comments>http://cofradia.org/2009/01/07/mysql-no-sabe-sumar-numeros-positivos/#comments</comments>
		<pubDate>Wed, 07 Jan 2009 23:16:25 +0000</pubDate>
		<dc:creator>garaged</dc:creator>
				<category><![CDATA[Bases de Datos]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[enteros positivos]]></category>
		<category><![CDATA[integer unsigned]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://cofradia.org/?p=608</guid>
		<description><![CDATA[Ayer en una pequeña aplicación que hice me reportaron un bug, al revisar resulta que por alguna razon un paginador no estaba devolviendo resultados, al ver con detalle resulta que hay una parte de un query que no devuelve lo esperado&#8230; &#8220;&#8230;semana &#60;= (select max(semana) from datos) and semana &#62;= (select max(semana) from datos)-15&#8230;&#8221; Semana [...]]]></description>
			<content:encoded><![CDATA[<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="tall" count="1" href="http://cofradia.org/2009/01/07/mysql-no-sabe-sumar-numeros-positivos/"></g:plusone></div><p>Ayer en una pequeña aplicación que hice me reportaron un bug, al revisar resulta que por alguna razon un paginador no estaba devolviendo resultados, al ver con detalle resulta que hay una parte de un query que no devuelve lo esperado&#8230;<br />
<span id="more-608"></span><br />
&#8220;&#8230;semana &lt;= (select max(semana) from datos) and semana &gt;= (select max(semana) from datos)-15&#8230;&#8221;</p>
<p>Semana es una columna de enteros positivos (integer unsigned), y pues lo primero que hago es ver que devuelve cada sección, y resulta que la segunda (la del -15) devuelve un numero gigantesco (no se si fue suerte o no que no limitara a 2 o 3 dígitos la columna) por lo que obviamente nunca se cumplia la condición, ya que semana nunca era mayor que 20 o 30 tal vez.</p>
<p>Investigando sobre como hace la suma (o resta) de enteros positivos MySQL, resulta que hay un bug ya de años reportado, en el que se explica que cuando una suma de estos da un resultado negativo, en esencia resta el resultado al máximo valor de la columna, de tal manera que por eso me devolvía un numero horroroso, ash lo odio, en vez de hacer lo correcto.</p>
<p>La solución fue relativamente sencilla, y muy poco elegante, pero funciona <img src='http://cofradia.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&#8220;semana &lt;= (select max(semana) from datos) and semana &gt;= if((select max(semana) from datos)-1000,0,(select max(semana) from datos)-15)&#8221;</p>
<p>De esta manera, si el resultado es negativo, me devuelve un cero, en vez de lo que se le da la gana.</p>
<p>A final de cuentas es discutible que realmente MySQL hace lo correcto, el problema es que no es lo esperado (normalmente), y pues así como mucha documentación no hay, y tampoco sirve de mucho hacer un&#8221;cast&#8221;, o más bien, se tiene que hacer al revés de los esperado, en vez de hacer cast a &#8220;integer unsigned&#8221;, tienes que hacerlo a &#8220;integer), algo así, pero creo que es mucho más claro poner el &#8220;IF()&#8221;.</p>
<p>Ahi les dejo, buen día</p>
]]></content:encoded>
			<wfw:commentRss>http://cofradia.org/2009/01/07/mysql-no-sabe-sumar-numeros-positivos/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

