FireBird de String Uzunluğu Bulmak

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
Kullanıcı avatarı
mikser
Üye
Mesajlar: 120
Kayıt: 30 Haz 2003 09:54
Konum: Ankara

FireBird de String Uzunluğu Bulmak

Mesaj gönderen mikser »

herkese selamlar

procedure ye parametre olarak gelen bir string in boyunu nasıl bulabilirim?

udf kullanarak bu yapilabiliyor fakat udf olmadan uzunluk nasıl bulunabilir. for, while v.s. ile bir string işlenebilir mi?

gelen parametre '01' de olabilir '100' de olabilir. '01' se farkli işlem '100' se farkli işlem olacak.

Kod: Tümünü seç

CREATE PROCEDURE NEWP (
    KOD VARCHAR(3))
RETURNS (
    SONUC VARCHAR(50))
AS
begin
   if( length (KOD) < 3 ) then
     sonuc = 'üç den kucuk';
   else
     sonuc = '3 den buyuk veya eşit';

    suspend;
end
gibi bir şey yani...

iyi çalışmalar.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

S.A.
fbi le beraber gelen udf lerin içinde "strlen" ismindeki udf nin istediğin şeyi yapması lazım.
Kolaygelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
mikser
Üye
Mesajlar: 120
Kayıt: 30 Haz 2003 09:54
Konum: Ankara

Mesaj gönderen mikser »

üstad udf ile yapıldığını biliyorum. Fakat udf olmadan yapılabilirmi bunu sormustum.

udf ile bir fonksiyon kullanıldı diyelim. bu dll yi vt ile taşımak gerekir mi? Gerekirse taşıma işiyle ugrasmamak icin udf olmadan yapmaya calistim.

fakat ilginçtir

if(:KOD < 100) then ....
gibi bir kodla sorunsuz calisti. Sanırım tip değişimini kendi yapiyor.

gelen string 01 02 05 .... 99 ... 100, 101 şeklinde geldigi için sorun cikmadı. a1 aa1 şeklinde bir string gelirse zaten hata verip işlemi kesiyor.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

S.A.
kusura bakma yanlış anlamışım. şimdi soruya tekrar baktım :oops:
aslangeri yazdı:fbi le beraber gelen...
fb ile beraber geldiğine göre daıtmak için fazla uğraşman gerekmez.
+
fb ile beraber geldiğine göre demekki bu işi yapan başka bir komut yokmuş. Olsaydı adamlar udf yazmazdı gibime geliyor.
Kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
onaydin

Mesaj gönderen onaydin »

Kod: Tümünü seç

if(:kod < 100)
deyince string uzunluğuna bakmıyor sayısal olarak
küçük olup olmadığına bakıyor
oraya harf gelincede hata verdiriyor;
@aslangeri nin dediği gibi udf kullanmakta fayda var
yok kullanmıycam diyorsanız;

Kod: Tümünü seç

CREATE PROCEDURE Len (str VARCHAR(100))
  RETURNS (len INTEGER) AS
DECLARE VARIABLE pat VARCHAR(100);
BEGIN
  len = null;
  IF (str IS NULL) THEN EXIT;

  pat = '';
  len = 0;
  WHILE (NOT str LIKE pat) DO BEGIN
    pat = pat || '_';
    len = len + 1;
  END
END
Kullanıcı avatarı
mikser
Üye
Mesajlar: 120
Kayıt: 30 Haz 2003 09:54
Konum: Ankara

Mesaj gönderen mikser »

onaydin sagolasın üstadim.
aslangeri, udf yi de deniycem.

teşekkürler.
Cevapla