long example ejemplo mysql sql sql-server database database-design

example - varchar mysql



por qué varbinary en lugar de varchar (2)

En MSSQL:

Creo que la gran diferencia es solo entre nvarchar y varbinary .

Porque nvarchar almacena 2 bytes por cada carácter en lugar de 1 byte.

varchar hace lo mismo que varbinary : de MSDN:

El tamaño de almacenamiento es la longitud real de los datos ingresados ​​+ 2 bytes "para ambos.

La diferencia aquí es varbinary. Los datos que se ingresan pueden tener 0 bytes de longitud.

Aquí hay un pequeño ejemplo:

CREATE TABLE Test (textData varchar(255), binaryData varbinary(255)) INSERT INTO Test VALUES(''This is an example.'', CONVERT(varbinary(255),''This is an example.'',0)) INSERT INTO Test VALUES(''ÜŰÚÁÉÍä'', CONVERT(varbinary(255),''ÜŰÚÁÉÍä'',0))

Lo que puedes usar aquí es la función DATALENGTH :

SELECT datalength(TextData), datalength(binaryData) FROM test

El resultado es 19 - 19 y 7 - 7

Entonces, en tamaño, son lo mismo, PERO hay otra diferencia. Si comprueba las especificaciones de la columna, puede ver que el varbinary (por supuesto) no tiene colación y juego de caracteres, por lo que podría ayudar a usar valores de diferentes tipos de codificación y juego de caracteres fácilmente.

SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ''Test'' ORDER BY ORDINAL_POSITION ASC;

Posible duplicado:
¿Cuál es la ventaja de usar varbinary sobre varchar aquí?

Por favor, eche un vistazo a esta tabla:

http://www.mediawiki.org/wiki/Manual:Logging_table

Como puede ver en Wikipedia, use varbinary en lugar de varchar:

| log_type | **varbinary**(32) | NO | MUL | | | log_action | **varbinary**(32) | NO | | | | log_timestamp | **binary**(14) | NO | MUL | 19700101000000 | | log_user | int(10) unsigned | NO | MUL | 0 | | log_user_text | **varbinary**(255) | | | |

Toda esta información es texto, ¿por qué los guardan como binarios?

Lo hacen para todas las tablas.


Mediawiki cambió de varchar a varbinary a principios de 2011 :

Guerra en varchar. Se cambiaron todas las ocurrencias de varchar (N) y varchar (N) binario a varbinary (N). los varchar causan problemas (errores de "combinación no válida de intercalaciones") en las bases de datos MySQL con ciertas configuraciones, especialmente la configuración predeterminada de MySQL.