pourquoi varbinary au lieu de varchar [dupliquer]
possibilité de dupliquer:
Quel est l'avantage d'utiliser varbinary sur varchar ici?
s'il vous Plaît prendre un coup d'oeil à ce tableau :
http://www.mediawiki.org/wiki/Manual:Logging_table
comme vous pouvez le voir wikipedia utiliser varbinary à la place 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) | | | |
toutes ces informations sont des textes, alors pourquoi les enregistrer en binaire ?
Ils font cela pour toutes les tables .
2 réponses
Mediawiki changé de varchar à varbinary dans début 2011 :
Guerre de type varchar. Changé toutes les occurrences de varchar (N) et varchar(N) binaire à varbinaire (N). les varchars causent des problèmes ("mélange invalide de sur les bases de données MySQL avec certaines configs, la plupart des notamment la config MySQL par défaut.
In MSSQL:
je pense que la grande différence est seulement entre nvarchar
et varbinary
.
parce que nvarchar
stocke 2 octets pour chaque caractère au lieu de 1 octet.
varchar
fait la même chose que varbinary
: à partir de MSDN:
La taille de stockage est la longueur réelle des données d'entrée + 2 octets" pour tous les deux.
la différence est ici par varbinary Les données saisies peuvent être 0 octets de longueur.
Voici un petit exemple:
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))
ce que vous pouvez utiliser ici est le DATALENGTH fonction:
SELECT datalength(TextData), datalength(binaryData) FROM test
le résultat est 19-19 et 7-7
donc en taille ils sont les mêmes, mais il y a une autre différence. Si vous cochez la colonne spécifications, vous pouvez voir, que le varbinary (bien sûr) n'a aucune collation et jeu de caractères, de sorte qu'il pourrait aider à utiliser des valeurs de différents types d'encodage et jeu de caractères facilement.
SELECT
*
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'Test'
ORDER BY
ORDINAL_POSITION ASC;