MySQL : trigger to capitalize first letter of each word

标签 mysql sql triggers

小伙伴们,

我有一张包含这个的表格:

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/

相关文章:

MYSQL - 仅将 where 子句应用于某些字段

mysql - 如何在 MySql 上管理 Huge 操作

mysql - 间隔日期之间的查询

oracle - After Delete 触发器会导致 Mutating 表吗?

mysql - Mysql建表时注释

php - 将 WordPress 页眉和页脚添加到 PHP 脚本

sql - 如何在 SQL (Oracle) 中执行跨列唯一约束

sql - 我可以将 Word 文档存储在 PostgreSQL 数据库中吗?

mysql - 在两个表之间插​​入带有联接的语句

MYSQL 触发器更新复制整行