可能重复:
如何将下一个最高数字插入数据库
我正在使用 MYSQL
我有一个名为 TeacherId 的列,它是自动递增的,如下所示:
TeacherId
1
2
3
4
我想要做的是在数字前面添加字母“T”,这样它就变成了:
TeacherId
T1
T2
T3
T4
我怎样才能更新或改变表来做到这一点?
以下是我的尝试,但没有奏效:
UPDATE Teacher SET TeacherId = CONCAT('T',TeacherId)
可能重复:
如何将下一个最高数字插入数据库
我正在使用 MYSQL
我有一个名为 TeacherId 的列,它是自动递增的,如下所示:
TeacherId
1
2
3
4
我想要做的是在数字前面添加字母“T”,这样它就变成了:
TeacherId
T1
T2
T3
T4
我怎样才能更新或改变表来做到这一点?
以下是我的尝试,但没有奏效:
UPDATE Teacher SET TeacherId = CONCAT('T',TeacherId)
我强烈建议您考虑在查询时将 T 附加到显示上,而不是尝试在每一行上存储一个 T。我不明白以这种方式存储数据的目的,特别是如果您有其他表以本机形式使用 TeacherId 值。
如果您需要区分教师和管理员,那么有两个想法:
我知道您可能被告知它应该显示为 T3 等,但他们肯定没有明确告诉您“我们希望您将 T 和 3 一起存储在同一列中,否则。” 您可以向他们展示 T3,而无需以糟糕且无法使用的设计将它们硬塞在一起。
选择数据并自动在 TeacherId 前添加字母 T:
SELECT *, CONCAT('T', TeacherId) AS TeacherId2 FROM Teacher
如果您必须在表中使用它,请在表中创建第二列,这样您的创建将如下所示:
CREATE TABLE `teacher` (
`teacherId` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`t` CHAR( 10 ) NOT NULL DEFAULT ''
)
然后创建一个触发器,将您的第二列设置为与您的 id 连接的“T”。
delimiter |
CREATE TRIGGER teacherInsert after INSERT ON teacher
FOR EACH ROW BEGIN
UPDATE teacher SET `t` = concat('T', teacherId);
END;
|
delimiter ;
或者,您也可以按照 Aaron 的建议进行操作,并在查询时获取它:
select teacherId, concat('T', teacherId) from teacher