sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cuál es la diferencia entre CHAR y VARCHAR en SQL Server? SQL Server / Tutorial T-SQL Parte 31

CARÁCTER y VARCHAR ambos tipos de datos se utilizan para almacenar cadenas de caracteres.

Char tiene un ancho fijo, lo que significa que el tamaño de almacenamiento del valor de char es igual al tamaño máximo de la columna/Variable.

Varchar es de longitud variable. El tamaño de almacenamiento utilizado por Varchar depende de los caracteres reales guardados.


Ejemplo 1:

Vamos a crear un par de variables y luego guardar la misma cadena y comprobar el almacenamiento utilizado por la función de longitud de datos en 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
 
 ¿Cuál es la diferencia entre CHAR y VARCHAR en SQL Server? Tutorial de T-SQL
Como pueda ver arriba, Char ocupó 20 bytes de espacio para 20 caracteres, incluso guardamos solo 14 caracteres. Por otro lado, Varchar usó solo 14 bytes para almacenar 14 caracteres.


Ejemplos 2:

Vamos a crear una tabla con dos columnas, una char y otra tipo de datos varchat. Almacene la misma información y luego verifique el espacio ocupado por cada valor usando la función de longitud de datos.
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 en SQL Server - Tutorial de SQL Server/T-SQL 
 
 Podemos ver que Char siempre ocupa el mismo espacio independientemente del número o caracteres guardados. Por otro lado, el espacio ocupado por Varchar varía según la cantidad de caracteres guardados.
En los casos en los que sabemos que vamos a almacenar una cantidad fija de caracteres, podemos usar Char; de lo contrario, use Varchar.