遍历列 PSQL

Loop through columns PSQL

我想遍历每一列并在任何列的值不为 NULL 时递增计数器。因此,如果连续 7 列中有 3 列的值不为空,则计数器值应为 3。

如果可以避免,循环会很慢。如果你知道列的名称,你可以这样做:

UPDATE table SET counter = 
  CASE WHEN colA IS NULL THEN 0 ELSE 1 END +
  CASE WHEN colB IS NULL THEN 0 ELSE 1 END +
  CASE WHEN colC IS NULL THEN 0 ELSE 1 END +
  CASE WHEN colD IS NULL THEN 0 ELSE 1 END +
  CASE WHEN colE IS NULL THEN 0 ELSE 1 END +
  CASE WHEN colG IS NULL THEN 0 ELSE 1 END +
  CASE WHEN colF IS NULL THEN 0 ELSE 1 END;