如何给 MYSQL 中 auto_increment 的数字指定特殊格式?
How to give a special format to a number with auto_increment in MYSQL?
我想给MYSQL中的用户id指定一个特定的格式,但必须是auto_increment类型。我的想法是这样做:US01,US02,US03,US04...
我不知道如何做这种类型的 ID,非常感谢你的帮助
MySQL 中的自动递增数字的类型为 INT
或类型 BIGINT
。您不能将其他数据类型分配给自动增量器。 (所以,你不知道该怎么做也就不足为奇了,嗯?)
如果您在 MariaDB 或 MySQL 5.7.5+ 中工作,您可以创建一个虚拟(计算)列,将整数自动增量器转换为您想要的格式。如果您的自动递增列是 user_id
,这将为您提供一个具有您想要的 id 值的虚拟列。
ALTER TABLE mytable
ADD COLUMN useridtext varchar(10)
GENERATED ALWAYS AS
(CONCAT('US', LPAD(user_id,8,'0')))
PERSISTENT
在 MariaDB 中创建一个名为 useridtext
的新虚拟列。它包含 US00000001
、US00000002
等值。
通过创建 table 的视图,可以在 MySQL 的任何版本中完成相同的操作。
我想给MYSQL中的用户id指定一个特定的格式,但必须是auto_increment类型。我的想法是这样做:US01,US02,US03,US04...
我不知道如何做这种类型的 ID,非常感谢你的帮助
MySQL 中的自动递增数字的类型为 INT
或类型 BIGINT
。您不能将其他数据类型分配给自动增量器。 (所以,你不知道该怎么做也就不足为奇了,嗯?)
如果您在 MariaDB 或 MySQL 5.7.5+ 中工作,您可以创建一个虚拟(计算)列,将整数自动增量器转换为您想要的格式。如果您的自动递增列是 user_id
,这将为您提供一个具有您想要的 id 值的虚拟列。
ALTER TABLE mytable
ADD COLUMN useridtext varchar(10)
GENERATED ALWAYS AS
(CONCAT('US', LPAD(user_id,8,'0')))
PERSISTENT
在 MariaDB 中创建一个名为 useridtext
的新虚拟列。它包含 US00000001
、US00000002
等值。
通过创建 table 的视图,可以在 MySQL 的任何版本中完成相同的操作。