aar*_*ona 121 sql-server guid case
我们有一个日志表,其中有一个消息列,有时会有一个异常堆栈跟踪.我有一些标准来确定消息是否具有此功能.我们不希望向客户显示这些消息,而是发出如下消息:
内部错误发生.请与我们联系,参考代码为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
Run Code Online (Sandbox Code Playgroud)
RequestID
是SQL Server中的Guid数据类型,在此处不转换为字符串.我已经看到了一些关于如何将Guid转换为字符串的代码,但它是多行的,我不认为它会在case语句中起作用.有任何想法吗?
aar*_*ona 238
我想我找到了答案:
convert(nvarchar(50), RequestID)
Run Code Online (Sandbox Code Playgroud)
这是我找到此信息的链接:
http://msdn.microsoft.com/en-us/library/ms187928.aspx
Phi*_*ier 82
这里可以使用convert函数,但36个字符足以保存唯一标识符值:
convert(nvarchar(36), requestID) as requestID
Run Code Online (Sandbox Code Playgroud)
Sil*_*fer 31
在我看来,uniqueidentifier
/ GUID既不是a varchar
也不是nvarchar
a char(36)
.因此我使用:
CAST(xyz AS char(36))
Run Code Online (Sandbox Code Playgroud)