SQL Server:将UniqueIdentifier转换为case语句中的string

我们有一个日志表,有一个消息列,有时有一个exception堆栈跟踪。 我有一些标准,确定消息是否有这个。 我们不希望将这些消息显示给客户,而是显示如下消息:

内部错误发生。 请使用参考代码xxxxxxxx-xxxx-xxxx-xxxx-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是SQL Server中的Guid数据types,在这里不会转换为string。 我已经看到了一些关于如何将Guid转换为string的代码,但它是multithreading的,我不认为它会在case语句中起作用。 有任何想法吗?

我想我find了答案:

 convert(nvarchar(50), RequestID) 

这里是我find这个信息的链接:

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)