SQL Server, SCSU и как вычислить, когда строка не сжата? - PullRequest
0 голосов
/ 01 марта 2019

SQL Server 2008+ с использованием SCSU сжатия для сжатия страниц и строк, как описано в docs.microsoft и blogs.msdn Но неясно, как определитьявляется сжатой строкой в ​​базе данных или нет.Например, поле NChar (20) содержит сжатое значение для

German "Öl fließt": D66C20666C6965DF74
Russian "Москва": 129CBEC1BAB2B0

и несжатое для

Japanese " ♪リンゴ可愛いや可愛いやリンゴ。半": 00306A26EA30F330B430EF531B6144308430EF531B6144308430EA30F330B43002304A53
Korean "향찰/鄕札 구결/口訣 이두/吏讀": A5D530CC2F0015912D6720006CADB0AC2F00E353238A200074C750B42F000F545AF9

Я искал какой-либо знак на рисунке, сжатое значение или нет, но не могунайти любой.Реализация SCSU не работает, и там нет ничего, что можно распознать Unicode Unicode.Как понять, что это SCSU сжатый или чистый Юникод внутри?

1 Ответ

0 голосов
/ 05 марта 2019

Решение простое: если количество байтов в массиве нечетное - оно сжимается, если четное - Unicode.Если сжато, но количество байтов даже тогда, сервер добавляет бессмысленный байт в конце как тег SCSU, который ничего не делает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...