NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 18 - MS-SQL - Datové typy podrobněji

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Antonín Výtaha:23.7.2017 21:44

Kluci, jak mám nastrkat český text do databáze, aby se mi tam uložila normálně písmenka ě,č,ř a ne aby mi je to vypsalo bez háčků? Dělá mi to přesně to, co je popsáno zde v příkladu použití řetězce s podporou unikódu, na tom obrázku se sloupcem 1. Když to tam nastrkám přes Visual Studio, tak se to tam krásně zapíše jak má, ale v aplikaci už to potom blbne...

 
Odpovědět
23.7.2017 21:44
Avatar
Odpovídá na Antonín Výtaha
Michal Štěpánek:24.7.2017 8:53

A když tam ta data strkáš z "té" aplikace, tak je to OK?

Odpovědět
24.7.2017 8:53
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Michal Štěpánek
Antonín Výtaha:24.7.2017 20:48

To právě není. Jakoby byl problém v odesílání přes INSERT do databáze, protože to co je v databázi nastrkané přes Visual Studio (jak je tam na to takový editor, přes Zobrazit data tabulky), tak to se vypíše hezky česky, ale z té aplikace to právě napíše místo tohoto: ěščřžýáíé toto:ešcržýáíé. Když jsem Goooglil tak všichni radili, že je to kvůli kódování, aby se změnilo na UTF-8 (při najezí myši na string ve VS to hlásí, že je v UTF-16), ale nemám sebemenší tuchu o tom, kde by se to ve VS nebo v té databázi měnilo. :-( Do této diskuze mne právě nalákal "Příklad", co je zde u těch řetězců s podporou unikódu, páč tam je přesně to, co se mi děje (jestli nejsem ovšem jediný, komu se to takhle zobrazuji i zde na webu).

Programuji jen pro rekreaci, tak nejspíš jen dělám blbě něco, co máte hoši v malíku. :-)

 
Odpovědět
24.7.2017 20:48
Avatar
Odpovídá na Antonín Výtaha
Hubert Ličman:26.8.2017 22:10

Použij NVARCHAR(XX), kde XX je nejdelší předpokládaná délka. Je to datově úspornější. Variantou je použití NVARCHAR(MAX), když si nejsi jistý délkou.

Odpovědět
26.8.2017 22:10
Neznám slovo "nejde"
Avatar
Hubert Ličman:26.8.2017 22:14

BTW: Poněkud mi tady chybí datový tym IMAGE, který M$ doporučuje právě a jen pro obrázky uložené v MS SQL DB.Je podobný VARBINARY.
Tento typ fakticky pracuje tak, že se snaží na pole bytů aplikovat interní on-line kompresi, což pomůže ušetřit nějaké to místo. Proto je výhodnější, než-li VARBINARY.
ALE POZOR! Datové typy Text, binery, Varbinary a Image se ukládají do BLOB polí, což je odlišná struktura uložení v DB. Fakticky to znamená, že taková pole nejsou běžnými způsoby prohledávatelná a podmínkovatelná, s výjimkou Where... Is NULL.

Odpovědět
26.8.2017 22:14
Neznám slovo "nejde"
Avatar
Tomáš Vrána:31.10.2018 22:55

První dva příklady mi fungují. Další příklady mi podle tohoto zadání nefungují. Vytvoří se tabulka, ale už se do ní nenahrají data. Tomu poslednímu příkladu nerozumím. Proč jsou tam 3 řádky? Používám Visual Studio Express 2012.

Odpovědět
31.10.2018 22:55
Každý svého štěstí strůjcem.
Avatar
Tomáš Vrána:31.10.2018 23:26

Jsem vocas. Už jsem si to zprovoznil. Ale pořád nechápu ten poslední příklad. Proč jsou tam 3 řádky? A proč mi to nevyplňuje 2. sloupec? Píše mi to tam jen <Binary data>

Odpovědět
31.10.2018 23:26
Každý svého štěstí strůjcem.
Avatar
Ondřej Trnka
Tvůrce
Avatar
Ondřej Trnka:2.11.2018 13:58

Poslední příklad je na ukázku, jak funguje datový typ "timestamp" a "uniqueidentifier". Příkaz CREATE TABLE vytvoří strukturu a každý příkaz INSERT vloží jeden řádek. 3x INSERT = tři řádky

 
Odpovědět
2.11.2018 13:58
Avatar
Odpovídá na Antonín Výtaha
Antonín Výtaha:14.4.2019 20:28

Takže odpovím si sám: Nakonec se to celé vyřešilo dopsáním písmenka N před odesílaná data do tabulky, např. SELECT [Obyvatel] FROM [Mapy] WHERE [Mesto] = N'Černožice' - právě bez toho N před Černožicemi se do tabulky dotazovalo na Cernožice, čili mi to nevrátilo nic. Kdyby to někoho také potrápilo, tak se na to musí takhle. A z vlastní hlavy to nemám, myšlenka přišla odtud: https://stackoverflow.com/…-server-2008 - jinak datový typ těch měst mám nvarchar. ;-)

 
Odpovědět
14.4.2019 20:28
Avatar
Jastrab
Člen
Avatar
Odpovídá na Antonín Výtaha
Jastrab:21.5.2019 16:37

Ono pri vytvoreni databazy treba spravne zadefinovat nieco ako kodovanie - "Collation". Preto diakritika priamo z SQL Studia fungovala ale z aplikacie nie. Pokial sa chces vyhnut pisania toho N. Ono to spomina aj na tom stackoverflow.
Dalsi problem okrem diakritiky byva aj s datumom a casom, kedy program odosiela jeden format a DB ma definovany druhy format (program miesto ISO formatu 'YYYY-MM-DD' odosle 'DD-MM-YYYY' aj ked je definovane opacne)

 
Odpovědět
21.5.2019 16:37
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 16.