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)
строка, которая отображается.