Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Qual é a diferença entre VARCHAR e NVARCHAR no SQL Server - SQL Server / T-SQL Tutorial Parte 32

Varchar é um tipo de dados de caractere de comprimento variável que é usado para armazenar o formato de dados não Unicode. Você pode pensar em Não-Unicode como caracteres ingleses.

NVarchar também é um tipo de dados de caractere de comprimento variável que é usado para armazenar o formato de dados UniCode. Para formatos de dados Unicode, você pode pensar em alfabetos do idioma chinês, japonês, coreano e árabe.

O Varchar pode armazenar caracteres 'inglês' e leva um byte para armazenar cada caractere. Nvarchar pode armazenar caracteres em inglês e outros idiomas. NVarchar leva dois bytes para armazenar cada caractere.

Vamos criar duas variáveis ​​e verificar o espaço usado por cada variável.

Declare @Variable1 VARCHAR(20)
Declare @Variable2 NVARCHAR(20)

SET @Variable1='TechBrothersIT'
SET @Variable2='TechBrothersIT'

Select datalength(@Variable1) as VarLength1, datalength(@Variable2) as VarLength2

Qual ​​é a diferença entre VARCHAR e NVARCHAR - Tutorial SQL Server

Como temos declarar @Variable2 como NVarchar, levou o dobro do espaço em comparação com @Variable1 que é Varchar para armazenar os caracteres.


Vamos criar uma tabela com colunas de tipo de dados Varchar e NVarchar e inserir algumas registros.

Create table dbo.VarcharVsNvarchar( VarcharName Varchar(50),NVarcharName NVARCHAR(50))
insert into dbo.VarcharVsNvarchar  Values
('عامر','عامر'),
('عامر',N'عامر'),
('TechBrothersIT',N'TechBrothersIT')

Select * from dbo.VarcharVsNvarchar
go
Select DataLength(VarcharName) AS CHARNameLength,DataLength(NVarcharName) AS VarNameLength 
From dbo.VarcharVsNvarchar

Varchar VS Nvarchar no SQL Server - Tutorial TSQL

Nossa primeira consulta Select nos retornou os dados. Percebi que temos alguns dados lixo ????. Mesmo que tenhamos definido o tipo de dados da coluna NVarchar, ele inseriu o lixo. Para inserir dados Unicode na coluna do tipo Nvarchar, precisamos usar N com dados como você pode ver na segunda inserção (('عامر',N'عامر')).