gpt4 book ai didi

mysql - 按值 1 增加字母数字 VARCHAR 条目?

转载 作者:行者123 更新时间:2023-11-29 04:52:23 29 4
gpt4 key购买 nike

在一个旧项目中,由于没有经过深思熟虑的设计,我有一个实际上应该设置为 auto_increment 的列,但它不能,因为它是字母数字条目,如下所示:

c01
c02
c03

(c99 会继续到 c100 甚至更多),这封信发生在过去,需要大修系统才能将其删除,因此我更喜欢这种解决方法。

现在我需要一种方法来自己用SQL语句模仿auto_increment功能,我自己的尝试达到了以下目的:

INSERT INTO tags (tag_id, tag_name, tag_description, added_by_user_id, creation_date, last_edited) VALUES (SELECT(MAX(tag_id)+1), 

'Love', 'All about love', 7, now(), 0);

这不是按原样工作的,尽管其想法是选择“tag_id”列中最高的条目,然后简单地将其增加值 1。

有什么想法可以实现吗?

顺便说一下,我也不确定您是否可以通过这种方式简单地增加一个字母数字条目,虽然我知道可以做到,但我只是不知道如何做到。

最佳答案

如果您想安全地获取 c##.. 形式的标签 ID 的最大整数值,您可以使用以下表达式:

max( convert( substring(tag_id, 2) , unsigned integer) )
^^^ largest ^^^^^^^^^ after 'c' ^^^^^^^^^^^^^^^^ convert to positive number

然后你的插入语句看起来像这样:

set @newid = convert(
(select
max(convert( (substring(tag_id, 2)) , unsigned integer))+1
from tags), char(10)
);

set @newid = if(length(@newid) = 1, concat('0', @newid), @newid);
set @newid = concat('c', @newid);

INSERT INTO tags (tag_id, tag_name, tag_description, added_by_user_id,
creation_date, last_edited)
VALUES (@newid, 'Love', 'All about love', 7, now(), '2012-04-15');

演示:http://www.sqlfiddle.com/#!2/0bd9f/1

关于mysql - 按值 1 增加字母数字 VARCHAR 条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10254479/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com