[sql-server] SQL Server : Case 문에서 UniqueIdentifier를 문자열로 변환

때때로 예외 스택 추적이있는 메시지 열이있는 로그 테이블이 있습니다. 메시지에 이것이 있는지 여부를 결정하는 몇 가지 기준이 있습니다. 고객에게이 메시지를 표시하고 싶지는 않지만 대신 다음과 같은 메시지가 표시됩니다.

내부 오류가 발생했습니다. 참조 코드 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx로 문의하십시오.

여기서 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

RequestIDSQL Server의 Guid 데이터 유형이며 여기서 문자열로 변환되지 않습니다. Guid를 문자열로 변환하는 방법에 대한 코드를 보았지만 여러 줄로 표시되어 있으며 case 문에서 작동하지 않을 것이라고 생각합니다. 어떤 아이디어?



답변

나는 대답을 찾았다 고 생각한다.

convert(nvarchar(50), RequestID)

이 정보를 찾은 링크는 다음과 같습니다.

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


답변

여기서 변환 기능을 사용할 수 있지만 고유 식별자 값을 보유하기에 36 자이면 충분합니다.

convert(nvarchar(36), requestID) as requestID


답변

제 생각에 uniqueidentifier/ GUID는 a varcharnvarchar아니라 a char(36)입니다. 따라서 다음을 사용합니다.

CAST(xyz AS char(36))


답변

대신 Str(RequestID), 시도convert(varchar(38), RequestID)


답변