TSQL конвертировать новый в десятичный (38,0)

Я хочу привести или преобразовать вывод newid () в десятичную (с минимальным требуемым пространством)

Пока я сделал это:

SELECT  CAST( '0x'+REPLACE(CAST(NEWID() AS VARCHAR(50)), '-', '' ) AS DECIMAL(38,0) )

Но я получаю эту ошибку:

Ошибка преобразования типа данных varchar в числовой.

Много искал, но разочаровался, пришел сюда, чтобы найти помощь.

Спасибо заранее.


обновление: десятичное число (8,0) стало десятичным (38,0) и все еще получает ту же ошибку.

1 ответ

Решение

Это проблема xy.

Правильный тип данных для использования для GUID: uniqueidentifier, Нет необходимости преобразовывать его в какой-либо числовой тип данных самостоятельно.

uniqueidentifier хранится в 16-байтовом двоичном формате, а не char(36) строка, которая отображается.

Другие вопросы по тегам