1

私は最近、自分自身(ひどい)SQLiteを教え始めました。気になったのは、CASE式、つまり短絡評価を採用していることです。

これを回避する方法はありますか?短絡評価を使用しないCASEステートメントを探しています。

UPDATE [table]SET [counting_column] =

(
CASE
    when [column1] = NULL 
    then [counting_column] + 1

    ...

    when [column31] = NULL
    then [counting_column] + 1
end
)

データベース内の各エントリは、trueと評価された最初のエントリだけでなく、各caseステートメントによってテストされるようにしたいと思います。どんな助けでも大歓迎です。

注:明白なエラーが発生した場合はお詫び申し上げます。これはまったく新しいので、気楽に行ってください。

4

1 に答える 1

1

実際にcounting_column満たされる条件ごとに1を加算するだけの場合は、 n個 CASEのステートメントのチェーンを使用して、結果を一緒に加算できます。各個人は、またはをCASE提供します。これらはすべて一緒に加算され、の現在の値に加算されます。01counting_column

UPDATE [table] SET [counting_column] =
(
  [counting_column] + 
  (CASE when [column1] IS NULL then 1 ELSE 0 END) +
  (CASE when [column2] IS NULL then 1 ELSE 0 END) +
    ...
    ...
  (CASE when [column30] IS NULL then 1 ELSE 0 END) +
  (CASE when [column31] IS NULL then 1 ELSE 0 END)
)

= NULLをに変更したことに注意してくださいIS NULLNULL等式と比較できない特別な非値です=

[]また、SQLiteでは囲まれた識別子は問題ありませんが、これは主にT-SQLとの互換性のためであることも指摘しておきます。より標準的なアプローチは、次のように二重引用符を使用することです。UPDATE "table" SET "counting_column" = ...

于 2013-02-08T03:35:21.853 に答える