0

varcharフィールドの最大値を選択し、その値を1ずつ増やして、元の形式を保持したいと思います。

例の顧客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
4

2 に答える 2

0

私は、データベースをこのように設計すべきではないというコメントに同意します。しかし、あなたがそれに固執しているなら、私は最高の価値を得るためにこのようなものを提案します:

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

次に、返された結果に対してロジックを実行して、新しい値を生成します。サブストリング操作は非常に遅くなるため、これははるかに高速になります。この場合、実行されるのは1回だけです。

(これは、すべてのIDに同じプレフィックス、つまり「CUS」が付いていることを前提としていますが、コードはそれを暗示しているようです)。

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