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.