Ответ 1
Думаю, я нашел ответ:
convert(nvarchar(50), RequestID)
Здесь ссылка, где я нашел эту информацию:
У нас есть таблица журналов, в которой есть столбец сообщений, который иногда имеет трассировку стека исключений. У меня есть некоторые критерии, которые определяют, имеет ли это сообщение сообщение. Мы не хотим показывать эти сообщения клиенту, но вместо этого получаем сообщение типа:
Внутренняя ошибка. Свяжитесь с нами с кодом ссылки XXXXXXXXXXXX-XXXXXXXX-XXXXXXXXXXXX
где xxx и т.д. является столбец guid в таблице. Я пишу хранимую процедуру так:
declare @exceptionCriteria nvarchar(50)
select @exceptionCriteria = '%<enter criteria etc>%'
select LogDate,
case
when Message like @exceptionCriteria
then 'Internal Error Occured. Reference Code: ' + str(RequestID)
else Message
end
from UpdateQueue
RequestID
- тип данных Guid в SQL Server и не конвертируется в строку здесь. Я видел какой-то код о том, как преобразовать Guid в строку, но он многострочный, и я не думаю, что он будет работать в case case. Любые идеи?
Думаю, я нашел ответ:
convert(nvarchar(50), RequestID)
Здесь ссылка, где я нашел эту информацию:
Здесь можно использовать функцию преобразования, но достаточно 36 символов для хранения уникального значения идентификатора:
convert(nvarchar(36), requestID) as requestID
По моему мнению, uniquieidentifier/GUID не является ни varchar, ни nvarchar, но char (36). Поэтому я использую
CAST(xyz AS char(36))
Вместо Str(RequestID)
попробуйте convert(varchar(38), RequestID)