根据另一列是否=特定字符串将列添加到 table

Adding column to table based on whether another column = a specific string

我想添加一个名为“扫描”的列,其中包含基于“结果”是否为扫描的布尔值。因此,如果“结果”为“4-0”或“0-4”,我希望“扫描”列中的值为 True,否则为 False

这是table的一部分:

我试过这个:

ALTER TABLE "NBA_finals_1950-2018"
ADD "Sweep" BOOL;

UPDATE "NBA_finals_1950-2018"
    SET "Sweep" = ("Result" = '4-0' OR "Result" = '0-4');

但出于某种原因,当我 运行 这段代码...:[=​​19=]

SELECT *
FROM "NBA_finals_1950-2018"
ORDER BY "Year";

...只有其中一行(最后一行)的值为 True,即使还有其他行的结果是扫描(“4-0”或“0-4”)如下图所示。

我不知道为什么会这样,但我猜 UPDATE...SET 代码有问题。请帮忙。 提前致谢。

注意:我使用的是 PostgreSQL 13

如果字符串不是真正的样子,就会发生这种情况 -- 这通常是由于开头或结尾有空格。或者连字符可能不同,或其他相似的字符。

你只需要找到正确的模式。 select也是如此。这个returns没有值:

select *
from "NBA_finals_1950-2018"
where "Result" in ('4-0', '0-4');

你可以试试:

where "Result" like '%0-4%' or
      "Result" like '%4-0%'

但是,这应该可以满足您的要求:

where "Result" like '%4%' and
      "Result" like '%0%'

因为数字都是个位数

您可以将其合并到 update 声明中。

注意:双引号不是个好主意。我建议在不转义名称的情况下创建表和列。