用于选择varchar字段的最大值的SQL查询

时间:2012-08-16 09:04:28

标签: sql select varchar

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

ex的客户ID :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

2 个答案:

答案 0 :(得分:0)

我同意评论者的意见,数据库不应该像这样设计。但是,如果你坚持使用它,我建议使用这样的东西来获得最高价值:

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

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

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

答案 1 :(得分:0)

SELECT MAX(RIGHT(CusID, 7)) AS id
FROM tblCustomer