Char ma stałą szerokość, co oznacza, że rozmiar przechowywania wartości char jest równy maksymalnemu rozmiarowi kolumny/zmiennej.
Varchar ma zmienną długość. Rozmiar pamięci używany przez Varchar zależy od rzeczywistych zapisanych znaków.
Przykład 1:
Stwórzmy kilka zmiennych, a następnie zapiszmy ten sam ciąg i sprawdźmy pamięć używaną przez funkcję datalength w SQL Server.Declare @Variable1 CHAR(20) Declare @Variable2 VARCHAR(20) SET @Variable1='TechBrothersIT' SET @Variable2='TechBrothersIT' Select datalength(@Variable1) as VarLength1, datalength(@Variable2) as VarLength2
Jaka jest różnica między CHAR i VARCHAR w SQL Server — samouczek T-SQL
Jak możesz patrz wyżej, Char zajmował 20 bajtów miejsca na 20 znaków, a my zapisaliśmy tylko 14 znaków. Z drugiej strony Varchar używał tylko 14 bajtów do przechowywania 14 znaków.
Przykłady 2:
Stwórzmy tabelę z dwiema kolumnami, raz char i innym typem danych varchat. Przechowuj te same informacje, a następnie sprawdź miejsce zajmowane przez każdą wartość za pomocą funkcji długości danych.Create table dbo.CharVsVarChar( CHARName CHAR(50),VARName VARCHAR(50)) insert into dbo.CharVsVarChar
Values ('Aamir','Aamir'), ('TechBrothersIT','TechBrothersIT') ,('Raza','Raza') go
Select DataLength(CharName) AS CHARNameLength,DataLength(VarName) AS VarNameLength From dbo.CharVsVarChar
Char kontra Varchar w SQL Server — samouczek SQL Server / T-SQL
Widzimy, że Char zawsze zajmuje to samo miejsce, niezależnie od liczby lub zapisanych znaków. Z drugiej strony zajmowane miejsce Varchar różni się w zależności od liczby zapisanych znaków.
W przypadkach, gdy wiemy, że będziemy przechowywać stałą liczbę znaków, możemy użyć Char, w przeciwnym razie użyj Varchar.