211 votes

SQL Server: conversion de UniqueIdentifier en chaîne dans une instruction case

Nous avons une table de journal qui a un message de la colonne qui a parfois une trace de pile d'exception. J'ai quelques critères qui détermine si le message a cela. Nous ne voulons pas afficher ces messages pour le client, mais au lieu d'avoir un message du genre:

Erreur Interne S'Est Produite. Contactez-NOUS avec le code de référence xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

où xxx est un guid de la colonne dans la table. Je suis en train d'écrire stockées proc comme ceci:

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 est un identificateur de type de données dans SQL Server et ne pas se convertir à la chaîne ici. J'ai vu un peu de code sur la façon de convertir un Guid à la chaîne, mais il est multi-alignés et je ne pense pas qu'il serait de travailler dans une instruction case. Des idées?

387voto

DJTripleThreat Points 7513

Je pense avoir trouvé la réponse:

 convert(nvarchar(50), RequestID)
 

Voici le lien où j'ai trouvé cette information:

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

115voto

Philippe Grondier Points 6697

Il est possible d'utiliser la fonction convert ici, mais 36 caractères suffisent pour contenir la valeur d'identificateur unique:

 convert(nvarchar(36), requestID) as requestID
 

10voto

AussieAtHeart Points 90

Au lieu de Str(RequestID) , essayez convert(varchar(38), RequestID)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X