Vad är skillnaden mellan VARCHAR och CHAR datatyper? Var ska jag använda VARCHAR och CHAR?


Svar 1:

Ditt "standard" -val bör vara att använda VARCHAR, såvida du inte faktiskt behöver den CHAR-utrymme-vadding som andra har nämnt. (Om du inte gör det kommer det att orsaka konstiga buggar eftersom rymdstoppningen har konstigt och olika beteende som du måste förstå väl om du arbetar med en CHAR-typ). Den enda gången jag faktiskt använder CHAR i ett schema är om en sträng specificeras för att vara exakt en viss storlek, till exempel en produktkod med ledande nollor, etc.

Observera att många db-motorer faktiskt använder VARCHAR-stilstränglagring för både CHAR- och VARCHAR-strängar och bara gör utrymme-stoppning i exekveringsmotorn, så CHAR garanterar inte alltid ett lagringsformat med fast bredd. SQL-standarden anger bara vadderingsmaterialet på språket och kräver ingenting angående lagring för CHAR.

Ärligt talat, du behöver sällan utrymme padding i moderna appar, även om de kan vara praktiska om du behöver hämta data i ett format som är positionsspecificerat (många äldre filformatstandarder kräver att det i-värdet går från position X till position Y på en linje) och du vill inte skriva mycket kod för att infoga lämpliga utrymmen själv.

Positionspecifika fil- och rapporteringsformat är vanliga vid överföring av finansiell data. Min gissning är att den något udda semantiken för CHAR-datatypen i SQL är tänkt att vara vänlig mot denna typ av rapportgenerering och är ett "äldre" beteende.


Svar 2:

fyra

  1. Används för att lagra teckensträngvärdet med fast längd. Max. Nr. av tecken som datatypen kan innehålla är 255 tecken. Det är 50% snabbare än VARCHAR.Nyttar statisk minnesallokering.
VARCHAR
  1. Används för att lagra alfanumeriska data med variabel längd. Det maximala som denna datatyp kan rymma är upp till 4000 tecken. Det är långsammare än CHAR.Använder dynamisk minnesallokering.

Svar 3:

fyra

  1. Används för att lagra teckensträngvärdet med fast längd. Max. Nr. av tecken som datatypen kan innehålla är 255 tecken. Det är 50% snabbare än VARCHAR.Nyttar statisk minnesallokering.
VARCHAR
  1. Används för att lagra alfanumeriska data med variabel längd. Det maximala som denna datatyp kan rymma är upp till 4000 tecken. Det är långsammare än CHAR.Använder dynamisk minnesallokering.