如何解决在MySQL中创建一列,该列根据上一列中子字符串的存在自动填充0或1
我在MySQL上有这个数据库,除其他外,它具有以下列:国家,级别和分支。 我想要此数据库的三个新列指示这三列中的每一个是否有逗号(1)或没有(0)。像这样:
我希望这些列是自动的,因此可以将新的观察值添加到表中,而无需一次又一次地运行相同的脚本来更新此处显示的值。我知道如何使用IF函数在excel中做到这一点,但是我陷入了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,1);
SET NEW.bot_level = IF(POSITION(',' IN NEW.Level) = 0,1);
SET NEW.bot_branch = IF(POSITION(',' IN NEW.Branch) = 0,1);
END
它将自动填充表格中的这些列。确保您也确实也写了BEFORE UPDATE
触发器,因此在更改值时还应该更新这3列。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。