SQL Server: преобразование UniqueIdentifier в строку в case case

У нас есть таблица журналов, в которой есть столбец сообщений, который иногда имеет трассировку стека исключений. У меня есть некоторые критерии, которые определяют, имеет ли это сообщение сообщение. Мы не хотим показывать эти сообщения клиенту, но вместо этого получаем сообщение типа:

Внутренняя ошибка. Свяжитесь с нами с кодом ссылки 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. Любые идеи?

Ответ 2

Здесь можно использовать функцию преобразования, но достаточно 36 символов для хранения уникального значения идентификатора:

convert(nvarchar(36), requestID) as requestID

Ответ 3

По моему мнению, uniquieidentifier/GUID не является ни varchar, ни nvarchar, но char (36). Поэтому я использую

CAST(xyz AS char(36))

Ответ 4

Вместо Str(RequestID) попробуйте convert(varchar(38), RequestID)