0

我想选择 varchar 字段的最大值并将其值增加 1 保留其原始格式..

客户 ID 为 ex。:CUS0000001是值

向它添加 1,然后将其与其他详细信息一起输入到数据库中。

所以结果应该像CUS0000002..

这是我尝试过的,实际上达到了我想要的..

但这是最好的方法吗?

SELECT 
   CONCAT('CUS', RIGHT(CONCAT('000000', CONVERT((CONVERT(MAX(RIGHT(customer_id, 7)) , UNSIGNED) + 1), CHAR(10))), 7)) AS customer_id 
FROM customer_master
4

2 回答 2

0

我同意评论者的观点,即数据库不应该这样设计。但是,如果您坚持使用它,我建议您这样做以获得最高价值:

select customer_id from customer_master 
    order by customer_id desc 
    fetch first row only;

然后通过对返回的结果执行逻辑来生成新值。这会快得多,因为子字符串操作会很慢,在这种情况下它们只会执行一次。

(这假设每个 ID 都具有相同的前缀,即“CUS”;但是,您的代码似乎暗示了这一点)。

于 2012-08-16T09:48:27.227 回答
0
SELECT MAX(RIGHT(CusID, 7)) AS id
FROM tblCustomer
于 2016-12-07T06:35:38.783 回答