小伙伴们,
我有一张包含这个的表格:
CREATE TABLE IF NOT EXISTS `people` (
`Id_People` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`Firstname` varchar(20) NOT NULL,
`Lastname` varchar(20) NOT NULL,
PRIMARY KEY (`Id_People`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1002 ;
如何设置触发器,将我的名字和姓氏的首字母大写?
每当我添加某人时,
插入:
INSERT INTO people (Firstname, Lastname) VALUES ('doe', 'john')
每当我编辑某人时,
关于更新:
UPDATE people SET Lastname = 'smith', Firstname= 'jane' WHERE Id_People = 1;
这甚至还有一个双管名称,例如:john smith(名字)doe(姓氏)?
最佳答案
我可以建议您使用 MySql RDBMS。
MySql 没有提供将每个单词的首字母大写的标准函数。
首先,
创建这个函数:
DELIMITER $$
CREATE FUNCTION `capitalize`(s varchar(255)) RETURNS varchar(255)
BEGIN
declare c int;
declare x varchar(255);
declare y varchar(255);
declare z varchar(255);
set x = UPPER( SUBSTRING( s, 1, 1));
set y = SUBSTR( s, 2);
set c = instr( y, ' ');
while c > 0
do
set z = SUBSTR( y, 1, c);
set x = CONCAT( x, z);
set z = UPPER( SUBSTR( y, c+1, 1));
set x = CONCAT( x, z);
set y = SUBSTR( y, c+2);
set c = INSTR( y, ' ');
end while;
set x = CONCAT(x, y);
return x;
END$$
其次,
为更新和插入创建触发器
CREATE TRIGGER frst_l_up_insert BEFORE INSERT ON people FOR EACH ROW
SET NEW.Firstname = capitalize(NEW.Firstname), NEW.Lastname = capitalize(NEW.Lastname);
CREATE TRIGGER frst_l_up_update BEFORE UPDATE ON people FOR EACH ROW
SET NEW.Firstname = capitalize(NEW.Firstname), NEW.Lastname = capitalize(NEW.Lastname)
最后,
更新表中已有的记录
UPDATE people SET Lastname = capitalize(Lastname), Firstname = capitalize(Firstname);
关于MySQL : trigger to capitalize first letter of each word,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50631442/