1. ホーム
  2. sql-server

[解決済み] SQL Server: caseステートメントでUniqueIdentifierを文字列に変換する

2022-02-19 08:50:55

質問

メッセージカラムを持つログテーブルがあり、そのカラムには例外スタックトレースが含まれることがあります。メッセージにこれがあるかどうかを判断するいくつかの基準があります。これらのメッセージを顧客に表示せず、代わりに次のようなメッセージを表示させたいと考えています。

内部エラーが発生しました。お問い合わせ リファレンスコード付き xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxx

ここで、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データ型であり、ここでは文字列に変換されない。Guidを文字列に変換する方法のコードをいくつか見ましたが、複数行になっており、caseステートメントではうまくいかないと思います。何かアイデアはありますか?

どのように解決するのですか?

答えがわかったような気がします。

convert(nvarchar(50), RequestID)

この情報を見つけたリンクはこちらです。

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