Certamente NÃO :
-
TEXT, NTEXT
:esses tipos estão obsoletos a partir do SQL Server 2005 e não deve ser usado para novos desenvolvimentos. UseVARCHAR(MAX)
ouNVARCHAR(MAX)
em vez de
-
IMAGE
,VARBINARY(MAX)
:IMAGE
está obsoleto assim comoTEXT/NTEXT
, e não faz sentido armazenar uma string de texto em uma coluna binária....
Então isso basicamente deixa
VARCHAR(x)
ou NVARCHAR(x)
:VARCHAR
armazena strings não Unicode (1 byte por caractere) e NVARCHAR
armazena tudo em um modo Unicode de 2 bytes por caractere. Então você precisa de Unicode? Você tem caracteres árabes, hebraicos, chineses ou outros caracteres não europeus ocidentais em suas strings, potencialmente? Então vá com NVARCHAR
O
(N)VARCHAR
as colunas vêm em dois tipos:ou você define um comprimento máximo que resulta em 8000 bytes ou menos (VARCHAR
até 8000 caracteres, NVARCHAR
até 4000), ou se isso não for suficiente, use o (N)VARCHAR(MAX)
versões, que armazenam até 2 GByte de dados. Atualização: SQL Server 2016 terá suporte nativo a JSON - um novo
JSON
tipo de dados (que é baseado em nvarchar
) será introduzido, bem como um FOR JSON
comando para converter a saída de uma consulta em formato JSON Atualização nº 2: no produto final, a Microsoft não incluiu um
JSON
separado tipo de dados - em vez disso, há várias funções JSON (para empacotar linhas de banco de dados em JSON ou analisar JSON em dados relacionais) que operam em colunas do tipo NVARCHAR(n)