根据另一列是否=特定字符串将列添加到 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
声明中。
注意:双引号不是个好主意。我建议在不转义名称的情况下创建表和列。
我想添加一个名为“扫描”的列,其中包含基于“结果”是否为扫描的布尔值。因此,如果“结果”为“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
声明中。
注意:双引号不是个好主意。我建议在不转义名称的情况下创建表和列。