UUID является 128-битным значением. Тип CHAR(16) FOR BIT DATA
отражает, что для краткости это битовые данные, хранящиеся в символьной форме. Я не думаю, что VARCHAR(16)
будет работать, потому что у него нет битового флага. База данных должна была бы иметь возможность преобразовывать двоичные данные в символьные данные, которые связаны с кодированием и являются рискованными. Что еще более важно, это ничего не купит. Поскольку UUID равен всегда 128 бит, вы не сэкономите место при использовании VARCHAR
вместо CHAR
. Таким образом, вы могли бы также использовать предполагаемый CHAR(16) FOR BIT DATA
.
Я думаю, что в JDBC вы используете метод get / setBytes (), поскольку он работает с небольшими объемами двоичных данных. (Не позитивно, пришлось бы попробовать это)
И понятия не имею о части SQL Server.