У меня есть nvarchar(50)
столбец в 2000 таблицы SQL Server определяется следующим образом:Почему этот SQL CAST не работает?
TaskID nvarchar(50) NULL
Мне нужно, чтобы заполнить эту колонку со случайными SQL GUID, используя в NEWID()
функцию (я не могу изменить тип столбца uniqueidentifier
) ,
Я попытался это:
UPDATE TaskData SET TaskID = CAST(NEWID() AS nvarchar)
, но я получил следующее сообщение об ошибке:
Msg 8115, Level 16, State 2, Line 1 Arithmetic overflow error converting expression to data type nvarchar.
Я также попытался:
UPDATE TaskData SET TaskID = CAST(NEWID() AS nvarchar(50))
, но затем получил эту ошибку:
Msg 8152, Level 16, State 6, Line 1 String or binary data would be truncated.
Я не понимаю, почему это не работает, но это делает:
DECLARE @TaskID nvarchar(50)
SET @TaskID = CAST(NEW() AS nvarchar(50))
Я также попытался CONVERT(nvarchar, NEWID())
и CONVERT(nvarchar(50), NEWID())
, но получил ту же ошибку.
Update:
Хорошо, мое зрение будет, размер колонки на столе nvarchar(32)
не 50. Глубочайшие извинения за timewasting и спасибо за все ответы.
У вас есть и триггеры на этой таблице? Вы можете получать сообщения об ошибках от триггера. sp_helpTrigger 'TaskData' –
@GMastros - нет, проблема была в PEBKAC/PICNIC, более известном как код ID 10T. – Kev