在 MySQL 中创建一个列,根据前一列中是否存在子字符串自动填充 0 或 1

Create a column in MySQL that automatically fills 0 or 1 based on presence of substring on previous column

我在 MySQL 有这个数据库,其中包括以下列:Country、Level 和 Branch。 我想要这个数据库的三个新列,指示这三列中的每一列是否有逗号 (1) 或没有逗号 (0)。像这样:

我希望这些列是自动的,因此可以将新的观察结果添加到 table 而无需 运行 一次又一次地使用相同的脚本来更新那里显示的值。我知道如何在 excel 中使用 IF 函数执行此操作,但我卡在了 MySQL 中。我试过这个:

alter table countries
add bol_coutnry int GENERATED ALWAYS AS (if(`COUNTRY` LIKE '%{$,}%',1));

在相同代码的其他变体中甚至没有 运行。有任何想法吗? 谢谢

您只需编写一个触发器即可完成这项工作。

CREATE DEFINER=`root`@`localhost` TRIGGER `countries_before_insert` BEFORE INSERT ON `countries` FOR EACH ROW BEGIN
    SET NEW.bot_country = IF(POSITION(',' IN NEW.Country) = 0, 0, 1);
    SET NEW.bot_level = IF(POSITION(',' IN NEW.Level) = 0, 0, 1);
    SET NEW.bot_branch = IF(POSITION(',' IN NEW.Branch) = 0, 0, 1);
END

它将自动填充您 table 中的这些列。确保你也写了 BEFORE UPDATE 触发器,所以当更改值时也应该更新这 3 列。

您也可以使用INSTR at place of POSITION