[EDIT]
Es ist alles Richtig. DU hast gesagt du willst einen STRING, also hat die
DB dir auch einen STRING gegeben.

Zitat von
BINARY:
Zum Speichern binärer Strings, unabhängig vom Zeichensatz. Wertebereich für M: 0 bis 255. Weiterer Typ: VARBINARY
https://www.schmager.de/mysql.php
Du wolltest bestimmt den Typ "BLOB", bzw. BLOB(16) verwenden?
(einige andere DBMS bieten sogar direkt einen Typen für GUID, inkl. einer automatischen VARCHAR-Konvertierung, falls man sowas braucht)
Aber ja, ich hätte unter "BINARY" auch erstmal was Anderes verstanden 
[/EDIT]
DBTypen, welche die
Query-Komponente nicht versteht, bzw. nicht implementiert hat, weichen als Ersatz gern auf VARCHAR aus.
Und da UTF-8 in
DBMS nunmal statisch 3 (bis 5) Byte pro Char reserviert, passen in 16 Byte zufällig nur 5 Chars rein.
- entweder du nutzt eine andere DBKomponente, welche z.B. genau auf das gewünschte DBMS ausgelegt ist
- oder du erstellst selber die TField (TBlobField) und richtest sie passend ein (BlobType=ftBlob)
(Dank dem neuen MixedMode muß man nun auch nicht mehr ALLE Felder selbst erstellen, sondern nur noch die Nötigen)
- oder du spielst am TypeMapping rum, wo du selbst ensprechend die DBTypen zum gewüünschten TField-Typ definierst
- oder ...
Ein Therapeut entspricht 1024 Gigapeut.