微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据另一列是否 = 特定字符串向表中添加列

如何解决根据另一列是否 = 特定字符串向表中添加列

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

这是表格的一部分:

A part of the table

我试过了:

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'),如图所示如下图。

enter image description here

我不知道为什么会发生这种情况,但我想 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 举报,一经查实,本站将立刻删除。