Oba jsou datové typy v mnoha programovacích jazycích a databázových systémech, kde „char“ označuje znak a „varchar“ označuje variabilní znak. Char in C představuje typ znaku, který se používá k ukládání hodnot řetězce, většinou znaků a celých čísel kódovaných UTF-8. Na druhé straně Varchar je datový typ, který může obsahovat data libovolného typu neurčité délky. Varchar označuje datový typ pole v systému správy databáze. I když oba mohou ukládat hodnoty řetězce až do maximální délky 8 000 znaků, char vyžaduje více úložiště než varchar. Technicky se oba používají k ukládání stejných typů dat, liší se však způsobem, jakým jsou ukládána a získávána. Pojďme se podívat na jejich rozdíly v detailech.
Char je datový typ s pevnou délkou, který se používá k ukládání znaků jiných než Unicode, odtud název (zkratka pro znak). Zabírá jeden bajt místa pro každý znak, který je kódován jako čísla - ty z kódování ASCII. Typ char lze také použít k deklarování malých celých čísel. K deklarování znakové proměnné se používá klíčové slovo „char“, což znamená, že jeden znak je uložen v jednom bajtu.
Stejně jako u celočíselných typů může být znak podepsán nebo nepodepsán. Může uchovávat podepsané hodnoty char v rozmezí od -128 do 127 a v závislosti na velikosti architektury, může být také nepodepsané a uchovávat hodnoty v rozsahu od 0 do 255. Když jsou hodnoty char ukládány, jsou vyplněny pravým mezerou s mezerami na zadanou délku . Koncové mezery jsou odstraněny, když jsou načteny.
Například - pokud deklarujete proměnnou datového typu char (7), bude vždy trvat 7 bajtů dat bez ohledu na to, zda ukládáte 1 znak nebo 7 znaků, což znamená, že do sloupce můžete uložit maximálně 7 znaků..
Varchar, jak název napovídá, je datový typ s proměnnou délkou, který může obsahovat jakýkoli typ dat s délkou pohybující se od 0 do 65 535. Pole Varchar může ukládat hodnoty libovolné velikosti až do určitého limitu v závislosti na databázi. Lze jej definovat buď v programovacích jazycích nebo na úrovni databáze. Velikost varcharového pole může být od nuly po maximální deklarovanou délku pole.
K deklarování proměnného znaku se používá klíčové slovo „varchar“. Varchar zabere proměnný prostor, což znamená, že použije pouze počet bytů rovný počtu znaků. Pomáhá při vyhýbání se plýtvání prostorem, protože využívá pouze prostor potřebný pro velikost řetězce. V některých programovacích jazycích a databázových systémech se z databáze automaticky odstraní veškerý další prostor.
Například - pokud deklarujete proměnnou varchar (10), použije počet bytů rovný počtu znaků. Pokud tedy ukládáte pouze jeden znak, bude to trvat pouze jeden bajt a pokud ukládáte 10 znaků, bude to trvat 10 bajtů, čímž se zabrání plýtvání databázovým prostorem.
„Char“ je datový typ s pevnou délkou, který se používá k ukládání hodnoty řetězce znaků s pevnou délkou, zatímco „Varchar“ je datový typ s proměnnou délkou, který se používá k ukládání alfanumerických dat s proměnnou délkou..
Velikost úložiště znakové hodnoty se rovná maximální velikosti tohoto sloupce, který deklarujete při vytváření tabulky. Na druhé straně, velikost úložiště hodnoty varchar je skutečná délka zadaných dat, nikoli maximální velikost pro tento sloupec.
Můžete použít znak char, když se očekává, že položky dat ve sloupci budou stejné velikosti, zatímco naopak, varchar lze použít, když se očekává, že se položky dat ve sloupci liší..
Char používá přidělení statické paměti, zatímco varchar používá dynamické přidělení paměti
Délka proměnné char může mít jakoukoli hodnotu od 0 do 255, zatímco délka proměnné varchar je v rozsahu od 0 do 65 535.
Údaje jsou konzistentní v char, které se používá pro ukládání dat, jako jsou telefonní čísla, zatímco varchar se používá pro ukládání různých dat, jako jsou adresy.
Char | Varchar |
Slouží k uložení hodnoty řetězce znaků s pevnou délkou. | Slouží k ukládání alfanumerických dat proměnné délky. |
Délka se pohybuje od 0 do 255. | Délka se pohybuje od 0 do 65 535. |
Vezme 1 bajt na znak pro uložení. | Vezme 1 bajt na znak plus 1 nebo 2 bajty navíc pro uložení informací o délce. |
Velikost úložiště char je stejná jako deklarovaná. | Velikost úložiště varchar závisí na konkrétním uloženém řetězci. |
Používá přidělování statické paměti. | Používá dynamické přidělení paměti. |
Char by měl být použit, když je známa délka proměnné. | Varchar by měl být použit pouze v případě, že délka proměnné není známa. |
Přijímá pouze znaky. | Přijímá jak znaky, tak čísla. |
Je o 50 procent rychlejší než Varchar. | Je to pomalejší než Char. |
Velikost úložiště hodnoty char se rovná maximální velikosti sloupce. | Velikost úložiště hodnoty varchar se rovná skutečné délce zadaných dat, nikoli maximální velikosti sloupce. |