Alan daki değer email mi?

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
AhmetNuri
Üye
Mesajlar: 260
Kayıt: 02 Tem 2007 07:55
Konum: ist
İletişim:

Alan daki değer email mi?

Mesaj gönderen AhmetNuri »

Merhaba,
Firebird de girilen değerin email olup olmadığını kontrol eden bir sql komutu var mı?
Dışardan hazır storeproccedure olsa da işimi görür.

bu kod güzel gibi ama ben dbnin içrisinde olsun istiyorum.

Kod: Tümünü seç

using System;
using System.Text.RegularExpressions;

public class RegexUtilities
{
   public static bool IsValidEmail(string strIn)
   {
       // Return true if strIn is in valid e-mail format.
       return Regex.IsMatch(strIn, 
              @"^(?("")(""[^""]+?""@)|(([0-9a-zA-Z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-zA-Z])@))" + 
              @"(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,6}))$"); 
   }
}
Ahmet DENİZ
anemos
Üye
Mesajlar: 110
Kayıt: 02 Nis 2007 07:51
Konum: Sakarya / Hendek

Re: Alan daki değer email mi?

Mesaj gönderen anemos »

Merhaba;

Bunun gibi olabilir mi?

Kod: Tümünü seç

IF (metin like '%@%') THEN
orhancc
Üye
Mesajlar: 585
Kayıt: 24 Ağu 2010 02:14
Konum: İstanbul / Kadıköy
İletişim:

Re: Alan daki değer email mi?

Mesaj gönderen orhancc »

Kod: Tümünü seç

IF (
     CHARINDEX(' ',LTRIM(RTRIM(@email_address))) = 0 
AND  LEFT(LTRIM(@email_address),1) <> '@' 
AND  RIGHT(RTRIM(@email_address),1) <> '.' 
AND  CHARINDEX('.',@email_address ,CHARINDEX('@',@email_address)) - CHARINDEX('@',@email_address ) > 1 
AND  LEN(LTRIM(RTRIM(@email_address ))) - LEN(REPLACE(LTRIM(RTRIM(@email_address)),'@','')) = 1 
AND  CHARINDEX('.',REVERSE(LTRIM(RTRIM(@email_address)))) >= 3 
AND  (CHARINDEX('.@',@email_address ) = 0 AND CHARINDEX('..',@email_address ) = 0)
)
   print 'geçerli email adresi'
ELSE
   print 'geçersiz email adresi'
AhmetNuri
Üye
Mesajlar: 260
Kayıt: 02 Tem 2007 07:55
Konum: ist
İletişim:

Re: Alan daki değer email mi?

Mesaj gönderen AhmetNuri »

Merhaba,
yukardaki kodlar sanırım ms sql den
firebird için
tam şu şekilde bir trigger yazmıştım ki

Kod: Tümünü seç

AS
declare variable emailstr VARCHAR(100);
declare variable atint INTEGER;
BEGIN
  emailstr = new."adress";
  /*adres yazıldı ise */
  if (((emailstr is not null) ) 
   and
  /*@ ve . işareti var ise */
  (( position('@' in emailstr) > 0) and ( position('.' in emailstr) > 0))  and
  /*+ ve - işareti yok  ise */
 ( (( position('+' in emailstr) = 0)and ( position('-' in emailstr) = 0) ) and (( position('?' in emailstr) = 0) and ( position('I' in emailstr) = 0) and ( position('i' in emailstr) = 0) ) )and
  /*. en sonda ve @ en başta değilse ise */      
  ((right(emailstr, 1)<> '.') and  (left(emailstr, 1)<> '@') ))
then begin
 new."adress" =  emailstr;

  end
else
begin

 new."adress" =  '';
end  
end
bir de baktım firebirde check var. firebird
check ekliye ekliye gitmek daha iyi oldu.
check constraint Source kısmına

Kod: Tümünü seç

check ("adress" is not null)

Kod: Tümünü seç

check (( position('@' in "adress") > 0) and ( position('.' in "adress") > 0))

gibi şartlar yazarak olay çözldü
Ahmet DENİZ
Cevapla