Begge er datatyper i mange programmeringssprog og databasesystemer, hvor 'char' refererer til tegn og 'varchar' henviser til variabel karakter. Char in C repræsenterer den karaktertype, der bruges til at gemme strengværdier, for det meste UTF-8 kodede tegn og heltal. Varchar er på den anden side en datatype, der kan indeholde data af enhver type ubestemt længde. Varchar henviser til en datatype for et felt i et databasestyringssystem. Mens de begge kan gemme strengværdier op til en maksimal længde på 8.000 karakterer, kræver char mere plads end varchar. Teknisk bruges de begge til at gemme samme type data, men de adskiller sig i den måde, de gemmes og hentes på. Lad os se på deres forskelle i detaljer.
Char er en datatype med fast længde, der bruges til at gemme tegn, der ikke er Unicode, deraf navnet (forkortelse af tegn). Det optager en byte plads for hvert tegn, der er kodet som tal - dem fra ASCII-kodningen. Char-typen kan også bruges til at erklære små heltal. For at erklære en karaktervariabel bruges nøgleordet 'char', hvilket betyder, at et enkelt tegn gemmes i en byte.
Ligesom heltalstyperne kan char signeres eller ikke signeres. Det kan indeholde underskrevne char-værdier fra -128 til 127 og afhængigt af den arkitektoniske størrelse kan det også være usigneret, og holde værdier fra 0 til 255. Når char-værdier er gemt, er de højre polstret med mellemrum til den specificerede længde . De bagerste del fjernes, når de hentes.
For eksempel - hvis du erklærer en variabel af char (7) datatype, tager det altid 7 byte data uanset om du gemmer 1 karakter eller 7 tegn, hvilket betyder, at du maksimalt kan gemme 7 tegn i kolonnen.
Varchar er, som navnet antyder, en datatype med variabel længde, der kan indeholde en hvilken som helst type data, hvor længden varierer fra 0 til 65.535. Varchar-felt kan gemme værdier af enhver størrelse op til en bestemt grænse, afhængigt af databasen. Det kan defineres enten i programmeringssprog eller på databaseniveau. Størrelsen på varchar-feltet kan være alt fra nul til den maksimale deklarerede feltlængde.
For at erklære en variabel karakter bruges nøgleordet 'varchar'. Varchar tager en variabel plads, hvilket betyder, at den kun vil bruge antallet af bytes, der er lig med antallet af tegn. Det hjælper med at undgå spild af plads, da det kun bruger den plads, der kræves til strengenes størrelse. I nogle programmeringssprog og databasesystemer fjernes al ekstra plads automatisk fra databasen.
For eksempel - hvis du erklærer en variabel af varchar (10), bruger den antallet af bytes, der svarer til antallet af tegn. Så hvis du kun opbevarer et tegn, tager det kun en byte, og hvis du gemmer 10 tegn, tager det 10 byte, hvilket undgår spild af databaseplads.
'Char' er en datatype med fast længde, der bruges til at gemme tegnstrengværdien af fast længde, mens 'Varchar' er en datatype med variabel længde, der bruges til at gemme alfanumeriske data med variabel længde.
Lagringsstørrelsen på tegnværdien er lig med den maksimale størrelse på denne kolonne, som du erklærer, mens du opretter tabellen. På den anden side er lagringsstørrelsen for varchar-værdien den faktiske længde på de indtastede data, ikke den maksimale størrelse for denne kolonne.
Du kan bruge char, når dataindtastningerne i en kolonne forventes at være af samme størrelse, mens tværtimod kan varchar bruges, når dataindtastningerne i en kolonne forventes at variere i størrelse.
Char bruger statisk hukommelsesallokering, mens varchar bruger dynamisk hukommelsesallokering
Længden af en char variabel kan være af en hvilken som helst værdi fra 0 til 255, mens længden af en variabel variabel varierer fra 0 til 65,535.
Dataindtastninger er ensartede i char, som bruges til at gemme data som telefonnumre, mens varchar bruges til at gemme forskellige data som adresser.
char | VARCHAR |
Bruges til at gemme tegnstrengværdien af fast længde. | Bruges til at gemme alfanumeriske data med variabel længde. |
Længden varierer fra 0 til 255. | Længden varierer fra 0 til 65.535. |
Tar 1 byte pr. Tegn til opbevaring. | Tager 1 byte pr. Tegn plus 1 eller 2 ekstra byte til lagring af længdeinformation. |
Opbevaringsstørrelsen på char er den samme som deklareret. | Lagringsstørrelsen på varchar afhænger af den lagrede specifikke streng. |
Bruger statisk hukommelsestildeling. | Bruger dynamisk hukommelsesallokering. |
Char skal bruges, når variablen er kendt. | Varchar bør kun bruges, når variablen ikke er kendt. |
Det accepterer kun tegn. | Det accepterer både tegn og tal. |
Det er 50 procent hurtigere end Varchar. | Det er langsommere end Char. |
Opbevaringsstørrelsen på char-værdien er lig med den maksimale størrelse for kolonnen. | Lagringsstørrelsen på varchar-værdien er lig med den faktiske længde på de indtastede data, ikke den maksimale størrelse for kolonnen. |