2

列の 1 つがスカラー関数の結果に基づいている db ビューがあります (わかっていますが、悪い考えです)。関数 return は null を空の文字列に変換しますが、値が返されない場合、私のビューは null を表示する必要があります。case ステートメントの構文ドキュメントは、私に答えを提供していないようです。私の「希望的観測」の解決策は、関数呼び出しにエイリアスを付けてから、次のように case ステートメントでそのエイリアスを参照することです。

SELECT
   p.Name,
   CASE GetWinningTeam(p.id, 'WON') AS Winner 
       WHEN '' THEN NULL
       ELSE Winner
   END as WinningTeam
FROM
   Projects p

それ以外の

 SELECT
       p.Name,
       CASE GetWinningTeam(p.id, 'WON')
           WHEN '' THEN NULL
           ELSE GetWinningTeam(p.id, 'WON')
       END as WinningTeam
    FROM
       Projects p

ただし、これは有効な構文ではありません。caseステートメントまたはその他の解決策を使用して、レコードごとに1つの関数呼び出しのみを行う方法はありますか?

4

3 に答える 3