私はどういうわけかそれを動作させるように近いと思いますが、何らかの理由でまだエラーが発生します。
次のUPDATEクエリがあります。
UPDATE DeviceAttribute
SET Details = CASE Name
WHEN 'Accessories' THEN @Accessories
WHEN 'Description' THEN @Description
WHEN 'Specification' THEN @Specification
ELSE Details
END
WHERE DeviceID = 10
パラメータは、さまざまなユーザーによって入力されます。私が今直面している問題は、単一のフィールドを更新したい場合でも、他のパラメーターを古いデータで埋めなければならないということです。したがって、私はオプションIF @parameter IS NULL THENを設定し、すでにDBに格納されている値を保持したいと考えています。私はいくつかの解決策を見つけようとしましたが、次のクエリのようなものが解決策のようですが、それを機能させることができません:
UPDATE DeviceAttribute
SET Details = CASE Name
WHEN 'Accessories' IS NOT NULL THEN @Accessories
WHEN 'Description' IS NOT NULL THEN @Description
WHEN 'Specification' IS NOT NULL THEN @Specification
ELSE Details
END
WHERE DeviceID = 10
DBはSQL Server 2008に格納されています
助けてくれてありがとう。
明確にするための編集:
元のテーブルはこんな感じ
DeviceID|Name |Details |
10 |Accessories |earplugs |
10 |Description |protectors|
10 |Specification|BeatsByDre|
公開上の理由で、テーブルをオンにするクエリを作成しました。したがって、選択クエリが実行されると、返されるテーブルは次のようになります。
DeviceID|Accessories|Description|Specification|
10 |earplugs |protectors |BeatsByDre |
システムユーザーがアクセサリ、説明、仕様などのさまざまなフィールドを更新できるUIを作成しました。上部に表示されているクエリですべてのフィールドを更新すると、更新が機能します。ただし、テキストボックスを空のままにすると、@ parameterに値がないというエラーが表示されます。したがって、何かが書かれているフィールドのみを更新するソリューションを見つけようとしています。したがって、@ parameterがNULLの場合、元の値をDBに保持します。私が本当に望んでいるものに近いが、それを機能させることができない別の解決策を見つけました。ここに他のソリューションがあります:https : //stackoverflow.com/questions/9387839/mysql-if-not-null-then-display-1-else-display-0
'@'Accessories
私には意味がありません。
UPDATE
UIはデータベースにどのようなステートメントを送信しますか?