T-Sql Harf Döngüsü | MsSql

Merhaba, bir Kullanici tablomuz olduğunu düşünelim. KullaniciKodu alanımız var. A-0001, A-0002,… şeklinde tutuyoruz. Kullanıcı sayımız 10.000 olduğunda artık B.0001,… şeklinde ilerlemesini bekliyoruz.

Bunun için Sql tarafında nasıl bir script yazabiliriz?

DECLARE @TblKullanici TABLE (KullaniciKodu VARCHAR(6));
INSERT INTO @TblKullanici SELECT 'A-0001';
INSERT INTO @TblKullanici SELECT 'A-0002';
INSERT INTO @TblKullanici SELECT 'A-0003';
INSERT INTO @TblKullanici SELECT 'A-0004';
--INSERT INTO @TblKullanici SELECT 'A-9999';

DECLARE @intCharCode INT = 65;

BEGIN
	WHILE NOT (@intCharCode > 90)
		BEGIN
		IF (NOT EXISTS(SELECT * FROM @TblKullanici WHERE KullaniciKodu = (CHAR(@intCharCode) + '-9999'))) BEGIN
			SELECT (CHAR(@intCharCode) + '-' + RIGHT('0000' + CAST((CAST(SUBSTRING(ISNULL(MAX(KullaniciKodu), '0'), 3, 4) AS INT) + 1) AS VARCHAR(4)), 4)) AS YeniKullaniciKodu
					FROM @TblKullanici k  
				WHERE k.KullaniciKodu LIKE CHAR(@intCharCode) + '-' + '%';
			BREAK;
		END;
		SET @intCharCode = @intCharCode + 1
	END
END;

Yukarıdaki script bir harfe ait son indeks de tanımlıysa sonraki harfe otomatik geçecektir. Bunu bir stored procedure haline getirirseniz size uygun kullanıcı kodunu dönmesini sağlayabilirsiniz.

Selamlar.

Leave a Reply

Your email address will not be published. Required fields are marked *