mysql - 在 mysql 中创建序列号的自定义格式示例

标签 mysql database integer

我最近从 OpenOffice Base 切换到 MySQL 社区。在 ooBase 中,您可以在将整数输入数据库时​​自定义它们。例如,我可以输入 2013_00000,然后该列中的每个数字都将以这种方式格式化(2013_00001、2013_00002,...)。在 MySQL 社区玩了一段时间后,我注意到没有明显的方法来格式化这样的自定义整数。我可能忽略了一些基本的东西,但如果有人知道如何做到这一点,请告诉我。谢谢

最佳答案

为了在插入数据之前对其进行操作,您需要 trigger .

类似的事情:

CREATE TRIGGER ins_sn BEFORE INSERT ON tbl
FOR EACH ROW
    SET NEW.sn = CONCAT(LEFT(NEW.sn, 4), '_', RIGHT(NEW.sn,5));

如果您需要更新行,则需要第二个触发器:

CREATE TRIGGER upd_sn BEFORE UPDATE ON tbl
FOR EACH ROW
    SET NEW.sn = CONCAT(LEFT(NEW.sn, 4), '_', RIGHT(NEW.sn,5));

参见http://sqlfiddle.com/#!2/01428/1完整的示例。

这里,为了简单起见,我使用了 CONCAT()LEFT()RIGHT() 函数。也许您的数据需要更复杂的操作(即:填充)。 MySQL 有丰富的 string functions 。不管怎样,这是原则。

关于mysql - 在 mysql 中创建序列号的自定义格式示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17954127/

相关文章:

java - 整数 => 数字,反之亦然

java - 为什么我的程序不能按预期运行?

php - 将我的 sql 字段中的数据序列化为文本

php - 使用 ajax 自动完成处理下拉选择框选项

mysql - Symfony2 子级查询

mysql - 如何在不丢失数据的情况下更改 MySQL 表?

python - 改组 SQLAlchemy 结果?

Mysql 在 INSERT 查询中截断了不正确的 DOUBLE 值

database - 学习数据库归一化,对2NF一头雾水

javascript - 有多少种方法来检查 x 是否为整数以及哪一种最有效?