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

Diferença entre diferentes tipos de string no SQL Server?


text e ntext estão obsoletos, então vamos omiti-los por um momento. Para o que resta, existem 3 dimensões:
  • Unicode (UCS-2) x não unicode:N na frente do nome denota Unicode
  • Comprimento fixo x comprimento variável:var denota variável, caso contrário fixo
  • Em linha x BLOB:(max) como comprimento denota um BLOB, caso contrário é um valor em linha

Então, com isso, você pode ler o significado de qualquer tipo:
  • CHAR(10) :é um comprimento fixo em linha não Unicode de tamanho 10
  • NVARCHAR(256) :é um Unicode de comprimento variável em linha de tamanho até 256
  • VARCHAR(MAX) :é um comprimento variável BLOB não Unicode

Os tipos obsoletos text e ntext correspondem aos novos tipos varchar(max) e nvarchar(max) respectivamente.

Quando você acessa detalhes, o significado de in-row vs. BLOB borrões para pequenos comprimentos como o motor pode otimize o armazenamento e puxe um BLOB em linha ou envie um valor em linha para a unidade de alocação 'pequeno BLOB', mas isso é apenas um detalhe de implementação. Consulte Organização de tabelas e índices .

Do ponto de vista da programação, todos os tipos:CHAR , VARCHAR , NCHAR , NVARCHAR , VARCHAR(MAX) e NVARCHAR(MAX) , suporte uma API de string uniforme:String Functions . Os tipos antigos e obsoletos TEXT e NTEXT não suportam esta API, eles têm uma API de TEXTO separada e independente para manipular. Você não deve usar os tipos obsoletos.

Os tipos BLOB suportam atualizações in-loco eficientes usando o UPDATE table SET column.WRITE(@value, @offset) sintaxe.

A diferença entre os tipos de comprimento fixo e de comprimento variável desaparece durante a compactação de linha em uma tabela. Com a compactação de linha habilitada, os tipos de comprimento fixo e comprimento variável são armazenados no mesmo formato e os espaços à direita não são armazenados no disco, consulte Implementação de compactação de linha . Observe que a compactação de página implica compactação de linha.