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

¿Diferencia entre diferentes tipos de cadenas en SQL Server?

text y ntext están en desuso, así que omitámoslos por un momento. Para lo que queda, hay 3 dimensiones:

  • Unicode (UCS-2) frente a no Unicode:N delante del nombre denota Unicode
  • Longitud fija frente a longitud variable:var denota variable, de lo contrario fijo
  • En fila frente a BLOB:(max) como longitud denota un BLOB, de lo contrario es un valor en fila

Así que con esto, puedes leer el significado de cualquier tipo:

  • CHAR(10) :es una fila no Unicode de longitud fija de tamaño 10
  • NVARCHAR(256) :es un Unicode de longitud variable en fila de tamaño hasta 256
  • VARCHAR(MAX) :es un BLOB de longitud variable no Unicode

Los tipos obsoletos text y ntext corresponden a los nuevos tipos varchar(max) y nvarchar(max) respectivamente.

Cuando vaya a los detalles, el significado de in-row frente a BLOB se desdibuja en longitudes pequeñas, ya que el motor puede optimice el almacenamiento y extraiga un BLOB en fila o inserte un valor en fila en la unidad de asignación 'pequeño BLOB', pero esto es solo un detalle de implementación. Consulte Organización de tablas e índices .

Desde el punto de vista de la programación, todos los tipos:CHAR , VARCHAR , NCHAR , NVARCHAR , VARCHAR(MAX) y NVARCHAR(MAX) , admite una API de cadena uniforme:Funciones de cadena . Los tipos antiguos y obsoletos TEXT y NTEXT no admiten esta API, tienen una API de TEXTO separada y desesperada para manipular. No debe utilizar los tipos en desuso.

Los tipos BLOB admiten actualizaciones in situ eficientes mediante el uso de la columna SET de la tabla UPDATE table SET column.WRITE(@value, @offset) sintaxis.

La diferencia entre los tipos de longitud fija y longitud variable desaparece cuando se comprime filas en una tabla. Con la compresión de filas habilitada, los tipos de longitud fija y la longitud variable se almacenan en el mismo formato y los espacios finales no se almacenan en el disco, consulte Implementación de compresión de filas . Tenga en cuenta que la compresión de páginas implica la compresión de filas.