Firebird Aynı Kayıtları bul ve sil
#1
Merhaba bir önceki göndermimde olan firebird bul değiştir ve aynı kayıtları bul örnek dosyasını ekliyorum. Bu dosyayı mail adreslerini ayıklamak için hazırlamıştım. Onun için chek şartları filan var.
Yer alan örnekler

Aynı alanda yer alan aynı kayıtların bulunması

Aynı alanda yer alan aynı kayıtların silinmesi

Bul ve değiştir.

Chek örnekleri

Kod:
SET TERM ^ ;
create PROCEDURE AYNIOLANLARISIL
RETURNS (
    EMAILS varchar(60) )
AS
DECLARE VARIABLE sayac INTEGER ;    

DECLARE VARIABLE     KAYIT_SAYISI integer ;
declare cur cursor for
  (select  VWAYNI.EMAILSS  from VWAYNI);
begin

/*
BİR TABLODA AYNI ALANDA AYNI KAYIT VARSA BULUP KAYITLARI SİLER
UNİC İNDEX KULLANILMAMA SEBEBİ

BUL DEĞİŞTİR FONKSİYONU ÇALIŞTIKTAN SONRA BAZI KAYITLAR AYNI HALE DÜŞEBİLİYOR
MESELA İKİ EMAİL ADERSİ
İNFO@İNFO.COM
info@info.com

İ harflarini i harfine dönüştürünce ikitane aynı kayıt oluyor ve bul değiştir hata verip deva edemiyor

*/
  sayac = 0;
  select count(*)  from  VWAYNI into :kayit_sayisi  ;

  open cur;
  while (:kayit_sayisi>sayac) do
  begin
   select  VWAYNI.EMAILSS  from   VWAYNI into :EMAILS ;  
   sayac = sayac +1 ;  
   delete from EMAILS where EMAILS.EMAILS_EMAIL = :EMAILS ;    
    suspend;
  end
  close cur;
end^
SET TERM ; ^


GRANT EXECUTE
ON PROCEDURE AYNIOLANLARISIL TO  SYSDBA;

Kod:
SET TERM ^ ;
create PROCEDURE DEGISTIR
AS
DECLARE VARIABLE sayac INTEGER ;    
DECLARE VARIABLE    EMAILS varchar(60);
DECLARE VARIABLE     KAYIT_SAYISI integer ;
declare cur cursor for
  (select EMAILS_EMAIL  from EMAILS);
begin
  sayac = 0;
  select count(*)  from EMAILS into :kayit_sayisi  ;
/*
BUL DEĞİŞTİR.
SEÇİLEN ALANDA NOTPAT DAKİ BUL DEĞİŞTİR FONKSİYONU GİBİ ÇALIŞIR

ÖRNEĞİN
   update EMAILS r set r.EMAILS_EMAIL = replace(r.EMAILS_EMAIL, 'ü', 'u');
   Ü HARLERİNİ u harfine çevirir
  
   AHMET NURİ DENİZ
   10.2012
  
*/  
  open cur;
  while (:kayit_sayisi>sayac) do
  begin
   sayac = sayac +1 ;
   update EMAILS r set r.EMAILS_EMAIL = replace(r.EMAILS_EMAIL, 'Ü', 'u');
   update EMAILS r set r.EMAILS_EMAIL = replace(r.EMAILS_EMAIL, 'ü', 'u');  
   update EMAILS r set r.EMAILS_EMAIL = replace(r.EMAILS_EMAIL, 'Ğ', 'g');
   update EMAILS r set r.EMAILS_EMAIL = replace(r.EMAILS_EMAIL, 'ğ', 'g');  
   update EMAILS r set r.EMAILS_EMAIL = replace(r.EMAILS_EMAIL, 'İ', 'i');
   update EMAILS r set r.EMAILS_EMAIL = replace(r.EMAILS_EMAIL, 'I', 'i');  
   update EMAILS r set r.EMAILS_EMAIL = replace(r.EMAILS_EMAIL, 'Ş', 's');
   update EMAILS r set r.EMAILS_EMAIL = replace(r.EMAILS_EMAIL, 'ş', 's');      
   update EMAILS r set r.EMAILS_EMAIL = replace(r.EMAILS_EMAIL, 'Ç', 'c');
   update EMAILS r set r.EMAILS_EMAIL = replace(r.EMAILS_EMAIL, 'ç', 'c');
   update EMAILS r set r.EMAILS_EMAIL = replace(r.EMAILS_EMAIL, 'Ö', 'o');
   update EMAILS r set r.EMAILS_EMAIL = replace(r.EMAILS_EMAIL, 'ö', 'o');  
      
   update EMAILS r set r.EMAILS_EMAIL = replace(r.EMAILS_EMAIL, ' ', '');
   update EMAILS r set r.EMAILS_EMAIL = replace(r.EMAILS_EMAIL, 'www', '');
   update EMAILS r set r.EMAILS_EMAIL = replace(r.EMAILS_EMAIL, 'WWW', '');      
  
  
  
  
  
    if (row_count = 0) then leave;
    suspend;
  end
  close cur;



  

end^
SET TERM ; ^


GRANT EXECUTE
ON PROCEDURE DEGISTIR TO  SYSDBA;



Kod:
CREATE VIEW VWAYNI (EMAILSS)
AS  
/* TABLODAKİ ALANDA BİRDEN FAZLA AYNI KAYITTAN OLANLARI LİSTELER*/
/* AHMET NURİ DENİZ 11.10.2012 */
SELECT  EMAILS.EMAILS_EMAIL

FROM EMAILS

GROUP BY EMAILS.EMAILS_EMAIL

HAVING ( COUNT(EMAILS.EMAILS_EMAIL) > 1 )


;



Eklenti Dosyaları
.zip   OrnekEMAILLER.zip (Boyut: 49,81 KB / İndirilme: 37)



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  Firebird Store procedure le Bul ve Değiştir AhmetNuri 2 3.233 26-06-2022, 00:20
Son Mesaj: Zeki Gürsoy
  Firebird : Kurulum ve Connection Zeki Gürsoy 9 15.842 21-04-2021, 15:13
Son Mesaj: sarsak
access-sql-14 Firebird : Yürüyen Bakiye Uygulaması Zeki Gürsoy 16 14.569 12-08-2015, 14:12
Son Mesaj: akuyumcu63
  firebird ile listelenmiş verinin kaynak tablosunu değiştirme yardım! muratxx5 1 2.623 21-05-2012, 00:05
Son Mesaj: Zeki Gürsoy
  Firebird otmatik loglama (Trigger Level Loging) AhmetNuri 6 8.474 26-03-2012, 01:31
Son Mesaj: Zeki Gürsoy
  Firebird Veritabanında olan procedure lar nasıl gizlenir softdestek 8 6.568 19-03-2012, 21:40
Son Mesaj: softdestek
  Firebird : DateDiff (Excel ETARİHLİ fonk. birebir kopyası) Zeki Gürsoy 0 4.185 21-02-2012, 02:58
Son Mesaj: Zeki Gürsoy
  Trigger dan Firebird veri tabanı kullanıcısı ekleme silme ve gücelleme AhmetNuri 7 8.749 12-01-2012, 22:25
Son Mesaj: Zeki Gürsoy

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi