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.