2011-09-12 21 views
5

Duplicar posibles:
SQL Server Text type vs. varchar data type
Using varchar(MAX) vs TEXT on SQL ServerSQL 2008 - varchar (max) vs tipos de datos de texto

de este artículo, parece que los dos tienen la misma capacidad de tamaño: http://msdn.microsoft.com/en-us/library/ms143432.aspx

es realmente cierto? ¿Cuáles son las diferencias reales?

i acaba de migrar algunos datos de Oracle (CLOB y lo hizo en un varchar (max), pero parece que se trunca algunos de los valores de todos modos, debo utilizar texto en lugar?

Gracias!

+1

TEXTO se está volviendo depravado - http://andrewm-developmentnotes.blogspot.com/2011/03/text-type-deprecated-in-sql-server-2008.html – StuartLC

+1

Este hilo tiene la respuesta que está buscando: http://stackoverflow.com/questions/564755/sql-server-text-type-vs-varchar-data-type – Icarus

+0

http://stackoverflow.com/questions/834788/using-varcharmax-vs-text-on- sql-server – NullUserException

Respuesta

11

no, no se debe utilizar TEXT Por un lado, it has been deprecated since SQL Server 2005, y también se dará cuenta de que muchas operaciones de cadena no funcionan en contra de ella no utilice TEXT, NTEXT o IMAGE en absoluto -.. usar VARCHAR(MAX), NVARCHAR(MAX) o VARBINARY(MAX) lugar

.
+0

Maldita Microsoft. ¿Por qué no pueden apegarse a las convenciones y usar texto como MySQL y Postgres? –

+1

@Henley porque ya usaban texto y apestaba. ¿Por qué MySQL no podía seguir el estándar y usar desplazamiento/recuperación en lugar de esta mierda de límite tonto? El lodo vuela en ambos sentidos ... –

+0

no si hay mucho viento – shiggity

8

Los tipos heredados (TEXTO, NTEXT, IMAGEN) están en desuso y el soporte para ellos se eliminará en una versión futura de SQL Server.

Existen diferencias significativas en la forma de usarlos. Los nuevos tipos MAX admiten actualizaciones eficientes con la sintaxis .WRITE. Los tipos heredados tienen un conjunto arcano de funciones para lograr lo mismo (TEXTPTR, UPDATETEXT, sp_invalidate_testptr).

Los nuevos tipos MAX se pueden usar en funciones como REPLACE o SUBSTRING, cualquier función que acepte un VARCHAR(N) también aceptará un VARCHAR(MAX).

Los tipos heredados no admiten la conversión implícita que admiten los tipos MAX, consulte Data Type Conversions.

Ciertas características del motor funcionan con los tipos MAX, pero no con los heredados, p. Ej. operaciones en línea (en SQL 11 they support tables with BLOBs)

1

El artículo vinculado solo se ocupa de la asignación de espacio. Como mínimo, sepa que text, ntext and image data types will be removed from future releases of SQL Server, por lo que para tablas nuevas, use varchar (max), nvarchar (max) o varbinary (max).

De la misma importancia sería que uno interactúa con esos valores. ¿Prefiere usar la columna estándar = 'valor realmente largo' o UPDATETEXT y otras operaciones menos comunes para trabajar en una columna debido al tipo de datos?

Cuestiones relacionadas