SQL查询来选择一个varchar字段
问题描述:
我想选择一个varchar字段的最大值和递增1的值保留其原始格式的最大值。对于前SQL查询来选择一个varchar字段
客户ID。 :是价值
加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
答
我同意评论者的意见,数据库不应该像这样设计。但是,如果你坚持了下来,我建议这样的事情,以获得最高值:
select customer_id from customer_master
order by customer_id desc
fetch first row only;
然后生成通过对返回的结果进行你的逻辑的新值。这会更快,因为子字符串操作会很慢,在这种情况下,它们只会执行一次。
(假设每个ID都会有相同的前缀,即“CUS”;然而,你的代码似乎暗示)。
答
SELECT MAX(RIGHT(CusID, 7)) AS id
FROM tblCustomer
是否总是3个字母和数字的休息? – 2012-08-16 09:06:18
这对于并发更新不安全。更好地使用一个SEQUENCE。 – Thilo 2012-08-16 09:06:35
只要使用一个数字,但始终按照您的意愿格式化客户编号输出,是不是更明智? – BugFinder 2012-08-16 09:06:37