Преобразование числа не совпадает с длиной типа данных в SQL Server - PullRequest
0 голосов
/ 30 мая 2019

Я присваиваю следующий номер с типом данных bigInt.

DECLARE @Number Bigint = '269687584'

Когда я преобразовываю тип данных в Varbinary(4), он возвращает 0x10131B20.

Но когда я вычисляюдлина данных Varbinary, возвращает только 3. Я не знаю точно, что не так.

В базе данных SQL Server я хочу написать запрос для преобразования Bigint в Varbinary(4), нопреобразуется только как Varbinary(3).

Вот что я пробовал:

DECLARE @Number BIGINT = '269687584'

SELECT 
    @Number,
    CONVERT(VARBINARY(4), @Number), 
    LEN(CONVERT(VARBINARY(4), @Number))

Ответы [ 2 ]

1 голос
/ 30 мая 2019

Используйте DATALENGTH вместо:

DECLARE @Number BIGINT ='269687584'
SELECT @Number, CONVERT(VARBINARY(4), @Number), DATALENGTH(CONVERT(VARBINARY(4), @Number))
0 голосов
/ 30 мая 2019

В этом нет ничего плохого. Вы должны проверить длину, используя длину данных:

DECLARE @Number Bigint ='269687584'
SELECT @Number, CAST(@Number AS Varbinary(4)), DATALENGTH(CAST(@Number AS Varbinary(4)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...