0

SQL BDSで派生列を使用したいのですが、派生列で次のように実行したいと思います。

1)ソース列にNULLが含まれている場合は、「不明」に置き換えます

2)値がある場合は、指定された文字列に置き換えます。

これまでのところ、これを思いついたのですが、これらの式の構文に慣れておらず、エラーが発生し続けています。

ISNULL(Source) ? "Unknown" :  REPLACE("m", "m", "Pop memories" ), REPLACE("h", "h", "Pop     hits" ), REPLACE("a", "a", "Pop annual" ), REPLACE("y", "y", "Yearbook" ), REPLACE("bs", "bs", "Bestsellers" ) 

問題は各置換の間のコンマにあると確信していますが、他に何を使用すればよいかわかりません。助言がありますか?

編集:

さて、私はそれを解決しました。どうやらあなたは彼らがそのように働くためにREPLACESを入れ子にする必要があります:

ISNULL(Source) ? "Unknown" :  REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(Source, "bs", "Bestsellers" ), "m", "Pop memories" ), "h", "Pop     hits" ) , "a", "Pop annual" ), "y", "Yearbook" )
4

1 に答える 1

1

そのような静的な式は使用しないことをお勧めします。それに関するあなたの問題は、追加のケースがある場合、ますます複雑になる式ステートメントを見つけて変更しなければならないということです。

ここでは、ソースコードと説明を一致させるテーブルを使用したルックアップ変換の方が優れたソリューションになります。nullを無視するようにルックアップを設定してから、次のように派生列変換に単純な式を含めることができます。

ISNULL(Description)?"Unknown":Description

そうすれば、新しいソースコードがある場合は、それらをルックアップテーブルに追加するだけで、コードを変更する必要はありません。

于 2012-05-21T14:59:55.120 に答える