Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Qual è la differenza tra CHAR e VARCHAR in SQL Server - Tutorial SQL Server / T-SQL Parte 31

CAR e VARCHAR entrambi i tipi di dati vengono utilizzati per memorizzare stringhe di caratteri.

Char è una larghezza fissa, ciò significa che la dimensione di archiviazione del valore char è uguale alla dimensione massima della colonna/Variabile.

Varchar è di lunghezza variabile. La dimensione di archiviazione utilizzata da Varchar dipende dai caratteri effettivamente salvati.


Esempio 1:

Creiamo un paio di variabili, quindi salviamo la stessa stringa e controlliamo lo spazio di archiviazione utilizzato dalla funzione datalength in 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
 
 Qual ​​è la differenza tra CHAR e VARCHAR in SQL Server - Tutorial T-SQL
Come puoi vedi sopra, Char ha occupato 20 byte di spazio per 20 caratteri anche se abbiamo salvato solo 14 caratteri. D'altra parte, Varchar ha utilizzato solo 14 byte per memorizzare 14 caratteri.


Esempi 2:

Creiamo una tabella con due colonne, una volta char e un altro tipo di dati varchat. Memorizzare le stesse informazioni e quindi controllare lo spazio occupato da ciascun valore utilizzando la funzione datalength.
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 vs Varchar in SQL Server - Tutorial SQL Server/T-SQL 
 
 Possiamo vedere che Char occupa sempre lo stesso spazio indipendentemente dal numero o dai caratteri salvati. D'altra parte, lo spazio occupato da Varchar varia a seconda del numero di caratteri salvati.
Nei casi in cui sappiamo che memorizzeremo un numero fisso di caratteri, possiamo usare Char, altrimenti usare Varchar.