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



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




Произошла Внутренняя Ошибка. Свяжитесь с нами
со справочным кодом
xxxxxxxx-xxxx-xxxx-xxxx-XXXXXXXXXX




Где xxx etc-столбец guid в таблице. Я пишу сохраненный proc так:



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. Есть идеи?

602   4  

4 ответов:

Кажется, я нашел ответ:

convert(nvarchar(50), RequestID)

Вот ссылка, по которой я нашел эту информацию:

Http://msdn.microsoft.com/en-us/library/ms187928.aspx

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

convert(nvarchar(36), requestID) as requestID

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

CAST(xyz AS char(36))

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

Comments

    Ничего не найдено.