<?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>IT blog &#187; řazení dat</title>
	<atom:link href="http://szj.cz/tag/razeni-dat/feed/" rel="self" type="application/rss+xml" />
	<link>http://szj.cz</link>
	<description>internet, linux, novinky, programování</description>
	<lastBuildDate>Sat, 12 Sep 2015 11:14:32 +0000</lastBuildDate>
	<language>cs-CZ</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.2.2</generator>
	<item>
		<title>MySQL – řazení dle písmen a číslic</title>
		<link>http://szj.cz/mysql-razeni-dle-pismen-a-cislic/</link>
		<comments>http://szj.cz/mysql-razeni-dle-pismen-a-cislic/#comments</comments>
		<pubDate>Mon, 15 Oct 2012 16:48:03 +0000</pubDate>
		<dc:creator><![CDATA[fredomgc]]></dc:creator>
				<category><![CDATA[Programování]]></category>
		<category><![CDATA[databáze]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[řazení]]></category>
		<category><![CDATA[řazení dat]]></category>

		<guid isPermaLink="false">http://szj.cz/?p=448</guid>
		<description><![CDATA[Pro aplikaci vytvářenou na operační systém Android jsem potřeboval zajistit výpis ze vzdáleného serveru. Vytvořil jsem si proto příslušný PHP skript, který měl za úkol vypsat z databáze názvy dostupných seriálů, ty přeměnit do formátu JSON a předat je na stranu klienta v podobě chytrého mobilního telefonu, který tato data následně použije a zobrazí. Problém [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="http://szj.cz/wp-content/uploads/2012/10/mysql-razeni.png"><img class="alignleft size-full wp-image-449" title="mysql-razeni" src="http://szj.cz/wp-content/uploads/2012/10/mysql-razeni.png" alt="MySQL - řazení" width="128" height="128" /></a>Pro aplikaci vytvářenou na operační systém Android jsem potřeboval zajistit výpis ze vzdáleného serveru. Vytvořil jsem si proto příslušný PHP skript, který měl za úkol vypsat z databáze názvy dostupných seriálů, ty přeměnit do formátu JSON a předat je na stranu klienta v podobě chytrého mobilního telefonu, který tato data následně použije a zobrazí. Problém překvapivě nastal během vytváření dotazu. Ten jsem klasicky v jeho závěru obohatil o klauzuli <strong>ORDER BY</strong> a byl poněkud zklamán výsledkem. Chování přesně odpovídalo <a href="http://cs.wikipedia.org/wiki/ASCII">ASCII</a> tabulce, což znamená, že se nejprve objevily seriály začínající číslicí a teprve poté následovaly položky obsahující na první pozici písmeno. Osobně mi připadá přirozenější obrácené pořadí, a proto jsem začal hledat způsob, jak takového cíle dosáhnout.</p>
<p>Po chvíli jsem narazil na řešení spočívající v nasazení dvou řadících operací zároveň. Ve stejné době mi došlo, jakým způsobem budou řetězce složené z čísel interpretovány. Máme-li například trojici <strong>1, 2, 10</strong>, objeví se jako <strong>1, 10, 2</strong>, protože ctí pravidla pro zacházení s textem. K převodu na číslo poslouží trik, který znám z JavaScriptu. Jednoduše stačí provést číselnou operaci, jenž nezmění výsledek, tedy například vynásobení jedničkou nebo přičtení nuly.</p>
<p>Vraťme se ale nyní k samotnému seřazení. Nejprve zaměníme pořadí u řádků na základě převodu zvolené hodnoty na číslo. Druhá část řazení následuje ihned poté, tentokrát však již bere v potaz textovou reprezentaci. Hotový dotaz v mém případě vypadal takto:</p>
<p>SELECT * FROM shows ORDER BY (name * 1) ASC, name ASC</p>
<p>Jak již vás patrně napadá, sloupec <strong>name</strong> udržoval název daného seriálu, <strong>shows</strong> naopak slouží k identifikaci celé tabulky.</p>
<p>Stane-li se, že pořadí písmen následovaných číslicemi nevyhovuje, stačí jednoduše vyměnit obě součásti klauzule<strong> ORDER BY</strong>:</p>
<p>SELECT * FROM shows ORDER BY name ASC, (name * 1) ASC</p>
<p>Nyní výpis v čele ovládnou číselné údaje s plynulým navázáním záznamů, kde se první znak nese v duchu písmena.</p>
]]></content:encoded>
			<wfw:commentRss>http://szj.cz/mysql-razeni-dle-pismen-a-cislic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
