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这个信息的链接:
这里可以使用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)