Trim sorunu

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
KiPSOFT
Üye
Mesajlar: 16
Kayıt: 05 Eki 2007 09:22

Trim sorunu

Mesaj gönderen KiPSOFT »

Merhaba

Firebird 2.0 da select trim(leading '*' from deneme) from dentbl gibi bir sorgudaki trim doğru çalışırken

select trim(leading ' ' from deneme) from dentbl
içindeki boşlukları sildirmeye çalıştığımda ise boşlukları silmeden alan direk geliyor. boşluk silmek için farklı özel bir karakter mi belirtmeliyim ?
KiPSOFT
Üye
Mesajlar: 16
Kayıt: 05 Eki 2007 09:22

Mesaj gönderen KiPSOFT »

Kimse trim kullanmıyor galiba. O zaman firebird'ün adam akıllı bir fonksiyon manual'ine nereden ulaşabilirim sitesindeki 2.0 dökümanları çok yetersiz.
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Örnek data ve sorgularınız ve sonuçları konusunda örnekler verebilir misiniz.

Konuyu merak ettim, eğer bir BUG varsa geliştirmenlerine bildirebiliriz ;)

Not : Geç bir yanıt oldu ama en azından çözüme kavuşturalım.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
KiPSOFT
Üye
Mesajlar: 16
Kayıt: 05 Eki 2007 09:22

Mesaj gönderen KiPSOFT »

Örnek data ya gerek yok herhangi alphanumeric bir alanda deneyebilirsiniz ben fb2.1 de denedim olmuyor (başka sürümlerde denemedim) ;

örnek vermek gerekirse...

bizim dentbl tablomuzda adi_soyadi diye bir alan var ve icinde ki kayit "x y" yani x,boşluk ve y bu tabloya selec trim(leading ' ' from adi_soyadi) from dentbl sorgusu malesef boşlukları kaldırmadan geri geliyor oysa sql92 de boşlukları kaldırması gerekli.

ilginize teşekkürler
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Biraz araştırdığımda farkettim ki, TRIM() fonksiyonu, sondaki boşlukları almak için kullanılıyor, ancak TRIM(LEADING fonksiyonu ise, başındaki karakterleri temizlemek için kullanılıyor.

Deneme yapın, örneğin ismi 'A' ile başlayanları temizlemek için,

TRIM(LEADING 'A' FROM AlanAdi)

diyerek bir sorgu çekin o zaman durumu anlayacaksınız.

Şimdilik bulabildiğim bu. Örneğin 'Adnan ÖNCEVARLIK' isimli datada, aradaki boşluğu TRIM fonksiyonu ile ben aldıramadım.

Zaten TRIM (Budamak) başından veya sonundan yapılan bir işlem. İçini temizleyen ise başka şekilde yapılabilir.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
KiPSOFT
Üye
Mesajlar: 16
Kayıt: 05 Eki 2007 09:22

Mesaj gönderen KiPSOFT »

Evet sizinde dediğiniz gibi Trim budamak ve tüm programlama lisanlarında kullanımı baştan ve sondan boşluk atmak için kullanılır ama yine sizin dediğiniz gibi Leading koşulu içinden karakter temizlemek için kullanılıyor orada A yerine boşluk koyduğumuzda onların da temizlenmesi gerekmez mi nasıl A bir karakterse boşlukta bir karakter tek farkı bir escape karakter diğer sql92 uygulayan veritabanlarında aynı işlem sorunsuz çalışıyor. Sanırım firebird de bu işi yapacak fonksiyon yok.
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Eğer ' Adnan ÖNCEVARLIK' bilgisinin başındaki boşluğu kaldırmıyor diyorsanız sorun var demektir. Ama ' Adnan ÖNCEVARLIK' bilgisindeki orta kısımdaki boşluktan bahsediyorsanız, yapmaması normaldir.

Birazdan bir deneme yapıp size sonucu vereceğim.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
KiPSOFT
Üye
Mesajlar: 16
Kayıt: 05 Eki 2007 09:22

Mesaj gönderen KiPSOFT »

Leading ifadesi içinde geçenleri kaldır manasında kullanılmıyor mu zaten ben o mana dedim benim cümlenin başı ile sonundaki boşlukları kaldırmam değil ortadaki boşluğu kaldırmam gerekiyor.
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Doğru yapıyor !...

Test sonuçlarını veriyorum.

Kod: Tümünü seç

SELECT '*' || DENEME_ISIM_1, '*' || TRIM(LEADING ' ' FROM DENEME_ISIM_1) TRIMMED_ISIM 
FROM TBL_DENEME
WHERE DENEME_ID <= 10

Sonuç aşağıdaki gibi,

CONCATENATION,TRIMMED_ISIM
"* Etaoin","*Etaoin"
"* Sorcha","*Sorcha"
"* Irwin","*Irwin"
"* Beverly","*Beverly"
"* Deborah","*Deborah"
"* Uinsionn","*Uinsionn"
"* Frank","*Frank"
"* Teigue","*Teigue"
"* Jozef","*Jozef"
"* Lola","*Lola"

Sonuçları size export ettirerek verdim. Bir sorun yok !...

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
KiPSOFT
Üye
Mesajlar: 16
Kayıt: 05 Eki 2007 09:22

Mesaj gönderen KiPSOFT »

Çok enteresan sizin firebird sürümü nedir ?
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Trim baştaki veya sondakileri kaldırmak için kullanılır. Delphi'de de StuffString diye ayrı bir string fonksiyonu vardır. Yani içeridekiler replace etmek için kullanılır.
function StuffString(const AText: string; AStart, ALength: Cardinal; const ASubText: string): string;

Inserts a substring into a specified position of a string, replacing the current characters.
Delphi'de şöyle yapılabilir.

Kod: Tümünü seç

  Alan1 := StuffString(Alan1,1,1,' ') ;
şeklinde olabilir.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
KiPSOFT
Üye
Mesajlar: 16
Kayıt: 05 Eki 2007 09:22

Mesaj gönderen KiPSOFT »

Benim işim firebird le alakalı ben ansireplacestr yi kullanıyorum delphi de konuyla alakası yok ama :D
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Firebird 2.1 Beta 2

Detay

Version 2.1.0.16780
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
KiPSOFT
Üye
Mesajlar: 16
Kayıt: 05 Eki 2007 09:22

Mesaj gönderen KiPSOFT »

Yardımlarınız için teşekkürler tekrar deneyeceğim
Kullanıcı avatarı
ahmet_sinav
Üye
Mesajlar: 263
Kayıt: 17 Nis 2004 07:44
Konum: İzmir Yeşilyurt Ulu Cami
İletişim:

Mesaj gönderen ahmet_sinav »

firebird bu konularda çok esnek ve işlevsel aslına bakarsanız. firebird'te x işine yarayan fonksiyon yok demek biraz abes kaçıyor gibi geldi bana. Zira udf ile yapamayacağınız şey yok gibi.
Firebird iyidir, hızlıdır, işlevseldir, open source'tur nimetlerinden faydalanmanızı tavsiye ederim.
Saygılar;
İmam Süleyman Yakub <==> Molla Mustafa Mansur
Cevapla