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)