如何解决根据另一列是否 = 特定字符串向表中添加列
我想添加一个名为“Sweep”的列,其中包含基于“Result”是否为扫描的布尔值。因此,如果“结果”为“4-0”或“0-4”,我希望“扫描”列中的值为 True
,否则为 False
。
这是表格的一部分:
我试过了:
ALTER TABLE "NBA_finals_1950-2018"
ADD "Sweep" BOOL;
UPDATE "NBA_finals_1950-2018"
SET "Sweep" = ("Result" = '4-0' OR "Result" = '0-4');
但出于某种原因,当我运行此代码时...:
SELECT *
FROM "NBA_finals_1950-2018"
ORDER BY "Year";
...只有一行(最后一行)具有值 True
,即使还有其他行的结果是扫描('4-0' 或 '0-4'),如图所示如下图。
我不知道为什么会发生这种情况,但我想 UPDATE...SET
代码有问题。请帮忙。
提前致谢。
注意:我使用的是 Postgresql 13
解决方法
如果字符串实际上不是它们的样子,就会发生这种情况——这通常是由于开头或结尾的空格造成的。或者可能是连字符不同,或其他相似的字符。
您只需要找到正确的模式。 select
也是如此。这不返回任何值:
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
语句中。
注意:双引号是个坏主意。我建议在不转义名称的情况下创建表和列。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。