data zkrácena pro sloupec
<pre><code>declare float\_one, float\_two, my\_result numeric(7,2) my\_result = convert(float\_one/float\_two, decimal(7,2)); </code></pre><p>v tomto dotazu mysql provádím tento typ operace v uložené proceduře, ale linuxové prostředí phpmyadmin vyvolá následující varování:</p><blockquote> <p>poznámka: # 1265 data zkrácená pro sloupec 'float\_one' v řádku 5</p> </blockquote><p>má někdo představu, jak mohu tento problém vyřešit?</p><pre><code>create table if not exists `float\_sample` ( `id` int(11) not null auto\_increment, `first\_number` float(10,3) default null, `second\_number` float(10,3) default null, primary key (`id`) ) engine=myisam default charset=latin1 auto\_increment=3 ; insert into `float\_sample` (`id`, `first\_number`, `second\_number`) values (1, 2.900, 1.900), (2, 3.100, 22.100); </code></pre><p>a postup</p><pre><code>delimiter $$ drop procedure if exists float\_test$$ create procedure float\_test(in my\_id int) begin declare first\_float, second\_float decimal(10,3); declare done int default 0; declare mycursor cursor for select `first\_number`, `second\_number` from `float\_sample` where `id` = my\_id; declare continue handler for not found set done = 1; open mycursor; my\_loop:loop fetch mycursor into first\_float, second\_float; if done = 1 then leave my\_loop; end if; end loop my\_loop; close mycursor; -- select first\_float, second\_float; end;$$ delimiter ; </code></pre><p>a výsledek</p><pre><code>1 70 10:41:36 call mytests.float\_test(1) 0 row(s) affected, 2 warning(s): 1265 data truncated for column 'first\_float' at row 2 1265 data truncated for column 'second\_float' at row 2 0.032 sec </code></pre>
<p>jaká je hodnota float\_one v době převodu ???</p><p>všimněte si tohoto příkladu z mysql 5.5.12 ve windows</p><pre><code>mysql&gt; select convert(20000,decimal(7,2)); ++ | convert(20000,decimal(7,2)) | ++ | 20000.00 | ++ 1 row in set (0.00 sec) mysql&gt; select convert(200000,decimal(7,2)); ++ | convert(200000,decimal(7,2)) | ++ | 99999.99 | ++ 1 row in set, 1 warning (0.00 sec) mysql&gt; show warnings; ++++ | level | code | message | ++++ | warning | 1264 | out of range value for column 'convert(200000,decimal(7,2))' at row 1 | ++++ 1 row in set (0.00 sec) </code></pre><p>je možné, že data byla zkrácena, pokud bylo číslo float\_one větší než 99999,99. možná, mysql převáděl float\_one a float\_two na decimal (7,2) individuálně před provedením dělení. zkuste použít decimal (10,2) nebo vyšší, aby se přizpůsobily velkým hodnotám.</p><p><strong> aktualizace 2011-07-25 15:05 edt </strong></p><p>zde se děje určitý problém se zkrácením</p><p>podle <a href="http://rads.stackoverflow.com/amzn/click/0596002653">mysql reference manual strana 442 body 2,</a> </p><blockquote> <p>hodnoty decimal a numeric se ukládají spíše jako řetězce než jako binární čísla s pohyblivou řádovou čárkou, aby se zachovala desetinná přesnost těchto čísel. jeden znak se používá pro každou číslici hodnoty, deciaml bod (pokud je měřítko&gt; 0) a znaménko - (pro záporná čísla). pokud je měřítko 0, hodnoty decimal a numeric neobsahují žádné desetinné tečky nebo zlomkovou část.</p> <p>maximální rozsah decimal a numeric je stejný jako pro double, ale skutečný rozsah pro daný sloupec decimal nebo numeric může být omezen přesností a měřítkem pro daný sloupec. když je tomuto sloupci přiřazena hodnota s více číslicemi po desetinná tečka, než je povoleno určeným měřítkem, je hodnota zaokrouhlena na toto měřítko. když je sloupci decimal nebo numeric přiřazena hodnota, jejíž velikost přesahuje rozsah implikovaný specifikovanou (nebo výchozí) přesností a měřítkem, mysql ukládá hodnotu představující odpovídající koncový bod tohoto rozsahu.</p> </blockquote><p>musíte se přizpůsobit větší přesnosti a/nebo měřítku.</p><p>zde je příklad, proč</p><p>tuto uloženou proceduru jsem napsal pomocí vašich specifikací pro decmial a numeric.</p><pre><code>delimiter $$ drop procedure if exists `test`.`numtest` $$ create procedure `test`.`numtest` (num1 numeric(7,2), num2 numeric(7,2)) begin declare float\_one,float\_two,my\_result numeric(7,2); declare f1,f2 double(7,2); set f1 = num1; set f2 = num2; set float\_one = num1; set float\_two = num2; select f1 / f2; select float\_one / float\_two; select convert(float\_one / float\_two,decimal(7,2)); set my\_result = convert(float\_one / float\_two,decimal(7,2)); select my\_result; end $$ delimiter ; </code></pre><p>pro tento test jsem použil dvě hodnoty: 290,0 a 14,5.</p><p>před voláním uložené procedury numtest jsem vypočítal ručně 290,0/14,5</p><pre><code>mysql&gt; select 290.0 / 14.5; ++ | 290.0 / 14.5 | ++ | 20.00000 | ++ 1 row in set (0.00 sec) </code></pre><p>každé číslo jsem rozdělil na 100, 10000 a 1000000 a zkusil to znovu</p><pre><code>mysql&gt; select 2.9 / .145; ++ | 2.9 / .145 | ++ | 20.00000 | ++ 1 row in set (0.00 sec) mysql&gt; select .029 / .00145; ++ | .029 / .00145 | ++ | 20.0000000 | ++ 1 row in set (0.00 sec) mysql&gt; select .00029 / .0000145; ++ | .00029 / .0000145 | ++ | 20.000000000 | ++ 1 row in set (0.00 sec) </code></pre><p>zatím je vše dobré !!! nyní pro uloženou proceduru.</p><pre><code>mysql&gt; call numtest(290.0,14.5); ++ | f1 / f2 | ++ | 20.000000 | ++ 1 row in set (0.00 sec) ++ | float\_one / float\_two | ++ | 20.000000 | ++ 1 row in set (0.00 sec) ++ | convert(float\_one / float\_two,decimal(7,2)) | ++ | 20.00 | ++ 1 row in set (0.00 sec) ++ | my\_result | ++ | 20.00 | ++ 1 row in set (0.00 sec) query ok, 0 rows affected (0.00 sec) </code></pre><p>takže moje orignální dvě čísla fungují dobře. rozdělme je 100 a zkuste to znovu.</p><pre><code>mysql&gt; call numtest(2.9,0.145); ++ | f1 / f2 | ++ | 19.333333 | ++ 1 row in set (0.00 sec) ++ | float\_one / float\_two | ++ | 19.333333 | ++ 1 row in set (0.00 sec) ++ | convert(float\_one / float\_two,decimal(7,2)) | ++ | 19.33 | ++ 1 row in set (0.00 sec) ++ | my\_result | ++ | 19.33 | ++ 1 row in set (0.00 sec) query ok, 0 rows affected, 1 warning (0.00 sec) mysql&gt; show warnings; ++++ | level | code | message | ++++ | note | 1265 | data truncated for column 'num2' at row 2 | ++++ 1 row in set (0.00 sec) </code></pre><p>počkejte, ztratili jsme určitou přesnost. co se stalo ??? jak se to stalo ??? musíte pojmout více desetinných míst (&gt; 2)</p><p><strong> aktualizace 2011-07-25 17:37 edt </strong></p><p>v uložené proceduře jsem nahradil (7,2) (10,7) a vrátil jsem se do správné přesnosti</p><pre><code>mysql&gt; call numtest(2.9,0.145); ++ | f1 / f2 | ++ | 20.00000000000 | ++ 1 row in set (0.00 sec) ++ | float\_one / float\_two | ++ | 20.00000000000 | ++ 1 row in set (0.01 sec) ++ | convert(float\_one / float\_two,decimal(10,7)) | ++ | 20.0000000 | ++ 1 row in set (0.03 sec) ++ | my\_result | ++ | 20.0000000 | ++ 1 row in set (0.05 sec) query ok, 0 rows affected (0.06 sec) mysql&gt; </code></pre>
Funkce vraci #N/A protoze nenalezla odpovidajici hodnotu. Dost tezko muze najit ve sloupci A1:A5 hodnotu 0,142857143 co je min(B1:B5), musis hledat 1/min(B1:B5) pripadne ZAOKROUHLIT(1/MIN(B1:B5);0)  
napr. vzorec: =lookup((1/min(B1:B5);B1:B5;A1:A5) [`IGNORE_SPACE`](http://dev.mysql.com/doc/refman/5.1/en/server-sql-mode.html#sqlmode_ignore_space)Režim umožňuje mezery mezi názvy funkcí a následující závorkách. Pokud je to povoleno, všechny názvy funkcí se stal vyhrazená slova, protože to stane se nemožné pro MySQL, zda voláte funkce nebo deklarovat (s použitím) identifikátor.


Proto, pokud je to povoleno, vaše `CREATE TABLE`selže a následující:



```
SELECT MD5 (some_column) FROM some_table

```

bude pracovat. Pokud `IGNORE_SPACE`je vypnuta, opak stane ( `CREATE TABLE`bude fungovat a především `SELECT`nebude, protože tam je mezera mezi názvu funkce a závorce). pokud se při výpočtu objeví následující chybová hláška: je třeba nainstalovat patch knihoven systému mfc8. link ke stažení: http://www.microsoft.com/downloads/details.aspx?familyid=766a6af7-ec73-40ff-b072-9112bab119c2&displaylang=en takze rozumel-li jsem dobre zadani, pak lze postupovat nasledovne:v A1 je hodnota (cena), v C1 bude umisteno zaskrtavaci pole (muze byt i jinde), spojeno bude s bunkou E1 (True/False)soucet vybranych hodnot lze ziskat alternativne:- v F1: =A1*E1, pro ostatni bunky a policka totez (...,A4, E4, F4), v F5 vlozeno =SUMA().- v bunce urcene pro soucet (napr. G1): =SOUČIN.SKALÁRNÍ((A1:A4)*(E1:E4))Pozn.: Logicke hodnoty True/False Excel interpretuje jako 1/0 Zasa niekto, kto vobec netusi ktora bije. Motas piate cez deviate.Nieco si o tom nastuduj. CSV je cisto textovy format, do ktoreho sa da ale ulozit iba excel ktory ma iba 1 list.Prave preto, ze v CSV iba zoznam hodnot stlpcov z jednotlivych riadkov oddelenych oddelovacim znakom, defaultne to byva strednik ";"Takze v CSV ziadny nazov listu nie je.T.j. riadok vyzera asi takto Honza Novy;Praha;16000;Dejvicka.Este moze byt, ze prvy riadok v subore su nazvy stlpcov a nie ciste data.Ak su v nejakom stlpci sdruzene data, tak na to musis napisat nejaky kod, ktory tie data sprave rozdeli - najpravdepodobnejsie pomocou substring. Defender ma po poslednim updatu chybu, kdy krachuje na souborech ktere maji v nazvu dve tecky za sebou. V Prohlizeci udalosti najdesk konkretni soubor(y), ktere musis prejmenovat.VIz [https://www.idnes.cz/technet/software/microsof...](https://www.idnes.cz/technet/software/microsoft-chyba-aktualizace-windows-defender-antivirus.A200416_210859_software_nyv) protože používáte WinForms aplikaci, pokud je to v NET 2.0 je to vlastně systém uživatelských nastavení (tzv Properties), který je navržen pro tento účel. [Tento článek na webu MSDN](http://msdn.microsoft.com/en-us/library/aa730869(VS.80).aspx) má docela dobrý úvod do této


Pokud jste stále obavy o výkonu pak se podívat na [SQL Compact Edition](http://www.microsoft.com/sql/editions/compact/default.mspx) , který je podobný SQLite, ale je dar společnosti Microsoft, který jsem našel hraje velmi pěkně s WinForms a je tu i možnost [, aby to fungovalo s LINQ](http://geekswithblogs.net/steveclements/archive/2007/11/13/LINQ-to-SQL.compact.aspx) <p>pravděpodobně se dostáváte do radostí mysql myisam engine ...</p><p>v rámci mysql (nebo phpmyadmin) použijte příkazy repair table xyz znovu, opakovaně, na každé z vašich tabulek (nebo spíše tabulek souvisejících s vašimi podmínkami, protože to jsou ty, které znějí zkaženě), aby se zjistilo, zda to nic nevyřeší.</p><p>pokud selžou, existuje několik zdokumentovaných řešení:</p><p> <a href="http://www.google.com/search?q=recover+a+corrupt+mysql+database">http://www.google.com/search?q=recover+a+corrupt+mysql+database</a> </p><p>jakmile jsou věci obnoveny, spusťte příkazy optimalizovat tabulku xyz na každé tabulce a poté změňte motor databáze a každou tabulku, aby byla použita innodb. innodb poněkud neuspořádá katalog (zejména pokud upustíte databázi nebo velké tabulky), ale - pokud je kompatibilní s acid - je to o dost méně náchylné k chybám než myisam.</p> Zpět s .Net 1.1 zmatek byl nezbytný: rozklad kód byl jednoduchý, a ty by mohly jít ze sestavy, IL, do kódu C # a mít ji znovu sestaven s velmi malým úsilím.


Nyní s .Net 3.5 Nejsem si vůbec jistý. Zkuste dekompilace 3,5 sestavu; co dostanete, je dlouhá cesta z kompilace.


Přidejte optimalizací od 3,5 (mnohem lepší než 1.1) a způsob, jakým anonymní typy, delegátů a tak dále jsou zpracovány pomocí odrazu (jsou to noční můra překompilovat). Přidejte lambda výrazy, kompilátor ‚magic‘ jako Linq-syntaxe a `var`a C # 2 funkce, jako je `yield`(což má za následek nové třídy s nečitelné názvy). Váš rozložit kód končí dlouhá cesta od kompilovatelný.


Profesionální tým se spoustou času může ještě zvrátit zpět inženýr, ale pak totéž platí o jakémkoliv pozměněném kódu. Jaký kód se dostali ven, že by neudržitelný a vysoce pravděpodobné, že bude velmi buggy.


Doporučuji key-podepisování sestavení (to znamená, pokud hackeři mohou překompilovat jednu budou muset překompilovat všechny), ale nemyslím si, že mlžení to stojí za to. <p>použil bych <code>collectors.groupingby</code> s upraveným <code>localdate</code> na klasifikátoru, takže položky s podobnými daty (podle <em>komprese</em> zadané uživatelem) jsou seskupeny dohromady.</p><p>nejprve vytvořte následující <code>map</code>:</p><pre><code>static final map&lt;string, temporaladjuster&gt; adjusters = new hashmap&lt;&gt;(); adjusters.put("day", temporaladjusters.ofdateadjuster(d -&gt; d)); // identity adjusters.put("week", temporaladjusters.previousorsame(dayofweek.of(1))); adjusters.put("month", temporaladjusters.firstdayofmonth()); adjusters.put("year", temporaladjusters.firstdayofyear()); </code></pre><p>poznámka: pro <code>"day"</code> je používáno <code>temporaladjuster</code>, které umožňuje nedotčené datum.</p><p>poté pomocí <code>compression</code> zadaného uživatelem dynamicky vyberte způsob seskupení seznamu položek:</p><pre><code>map&lt;localdate, list&lt;item&gt;&gt; result = list.stream() .collect(collectors.groupingby(item -&gt; item.getcreationdate() .with(adjusters.get(compression)))); </code></pre><p><code>localdate</code> se nastavuje metodou <a href="https://docs.oracle.com/javase/8/docs/api/java/time/localdate.html#with-java.time.temporal.temporaladjuster-"><code>localdate.with(temporaladjuster)</code></a> .</p>