string alanı saysal gibi sıralama

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Misafir

string alanı saysal gibi sıralama

Mesaj gönderen Misafir »

Elimde string bir alan var burada öğrenci numaralrını tutuyorum.Sql ile nasıl sıralama yaptırabilirim.Yani alanı sayı gibi göstererek.VT Access
kayıltar şöyle
misalen
1
5
10
2
a1
e1
c1
sql ile sıralama yaptırdığımda sıralama şöyle olmalı
1
2
5
10
a1
c1
e1
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

merhaba,

Kod: Tümünü seç

select * from table1 order by alanadi
şeklinde denedin mi?
DeveloperToolKit

..::|YeşilMavi|::..
Misafir

Mesaj gönderen Misafir »

saol hocam ama bu tarz yazınca
misalen kayıtlarda
10
11
100
101
gibi değerler olduğunda sıralama hatalı oluyor.
bu tarz bişiy olunca
sonuç
10
100
101
11
şeklinde çıkıyor umarım anlatabilmişimdir
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

CInt fonksiyonu ile alanı donustur.

Kod: Tümünü seç

select cint(alan1) from tablo
order by 1
ayrıca su linkten access onksiyonları hakkında bilgi alabilirsin.
ÜŞENME,ERTELEME,VAZGEÇME
Misafir

Mesaj gönderen Misafir »

hocam cevap için çok teşekkür ederim.Canavar gibi çalışıyor
Fakat bu sadece
10
11
100
gibi değerler için çalışıyor
fakat işin içine
1
5
10
2
a1
e1
c1
şeklinde değerler girince veri türü uyuşmazlığı hatası alıyorum.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

mümkün değil öyle bir işlem. Tasarımını gözden geçir ya da yapmak istediğin işten vazgeç.

Kolay gelsin.
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

benimde anatablolarımdan birinde esas oğlan alan integere sayılar tutan bi string. çünkü bazen 000001, a001,a002 gibi kayıt eklenebiliyordu.. bende günlük bi jobno ekleyip max ile ogünün maksimum jobnosunu bulup onu arttırıp post ediyordum. liistelerkende tarih,bu jobnoya göre listeliyorum..

belki saçma olabilir ama programınız bu öğre. numarasına özel bi integer rakam üretir ve bunu insert eder. sıraalarkende bu gizli alandan sıralatırsınız.
tabi bu rakamı üretecek fonksiyon üzerinde biraz çalışmanız lazım. örneğin karakterin ascii kodunun, basamak sayısı ile çapımlarının toplamı tarzında :?: vey nebilim böyle bişiler işte.. en iyisi adminin dediği :lol:
.-.-.-.-.-.-.-. ^_^
Misafir

Mesaj gönderen Misafir »

sağolun hocam.
Elimde TMS'nin advnture stringgrid seti var.Bununla halledecem artık.
ASE
Kıdemli Üye
Mesajlar: 518
Kayıt: 28 Ağu 2003 03:17
Konum: samsun
İletişim:

Mesaj gönderen ASE »

gkimirti yazdı:CInt fonksiyonu ile alanı donustur.

Kod: Tümünü seç

select cint(alan1) from tablo
order by 1
ayrıca su linkten access fonksiyonları hakkında bilgi alabilirsin.
Bana da aynı şey firebird için lazım. Acaba var mı böyle bir fonksiyon. Ben bulamadım.
Hayırlı akşamlar.
Allah'ım!...
Yol boyunca bırakma elimi...
Düşerim sonra...


ASE YAZILIM
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

tip donusumu isine yarayan cast fonksiyonu Firebird'de de vardı diye hatırlıyorum...
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
ASE
Kıdemli Üye
Mesajlar: 518
Kayıt: 28 Ağu 2003 03:17
Konum: samsun
İletişim:

Mesaj gönderen ASE »

gkimirti yazdı:CInt fonksiyonu ile alanı donustur.

Kod: Tümünü seç

select cint(alan1) from tablo
order by 1
peki Fahrettin Abi
bu sorgunun firebird de olduğunu varsayarsak cast ile nasıl sıralama yapabiliriz. alan1 string bir alan
Allah'ım!...
Yol boyunca bırakma elimi...
Düşerim sonra...


ASE YAZILIM
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

Kod: Tümünü seç

select cast(alan1 as integer) from tablo
order by 1
seklinde olması lazım
yalnız donusumu hatalı sonuc veren bir string varsa orada sorgu cekme kırılır...

select cast('1234' as integer) from rdb$database
select cast('1234a' as integer) from rdb$database

bu ikisini bir dene
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
Terminator
Üye
Mesajlar: 313
Kayıt: 13 Ara 2005 01:45
Konum: İzmir, ama Aydın Efesi!

Mesaj gönderen Terminator »

çözümsüz bir işlem değil gayet basit,
ama arkadaş yanlış bölgede salyangoz satıyor,
burası firebird tarikatının tekkesi.
kendisine M$sql veya diğer veritabanları forumunu salık veririm.
access ticari biri üründür, satan ve desteğini veren bill abidir.
Firebird Foundation Member #208
http://www.firebirdsql.org
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

İlla SQL ile yapacağım diyorsan şuna benzer bir query yazman gerekir:

Kod: Tümünü seç

SELECT
  URUN_KODU,
  CASE
    WHEN STRLEN(URUN_KODU) = 1 THEN '000000000' || URUN_KODU
    WHEN STRLEN(URUN_KODU) = 2 THEN '00000000' || URUN_KODU
    WHEN STRLEN(URUN_KODU) = 3 THEN '0000000' || URUN_KODU
    WHEN STRLEN(URUN_KODU) = 4 THEN '000000' || URUN_KODU
    WHEN STRLEN(URUN_KODU) = 5 THEN '00000' || URUN_KODU
    WHEN STRLEN(URUN_KODU) = 6 THEN '0000' || URUN_KODU
    WHEN STRLEN(URUN_KODU) = 7 THEN '000' || URUN_KODU
    WHEN STRLEN(URUN_KODU) = 8 THEN '00' || URUN_KODU
    WHEN STRLEN(URUN_KODU) = 9 THEN '0' || URUN_KODU
  ELSE
    URUN_KODU
  END
FROM URUN
ORDER BY 2
İyi çalışmalar.
ASE
Kıdemli Üye
Mesajlar: 518
Kayıt: 28 Ağu 2003 03:17
Konum: samsun
İletişim:

Mesaj gönderen ASE »

Terminator yazdı:çözümsüz bir işlem değil gayet basit,
ama arkadaş yanlış bölgede salyangoz satıyor,
burası firebird tarikatının tekkesi.
kendisine M$sql veya diğer veritabanları forumunu salık veririm.
access ticari biri üründür, satan ve desteğini veren bill abidir.

@Terminator: Kusura bakma ama anlayamadım. Bu lafın kimeydi. Bana mı. Eğer banaysa ben yanlış yerde aramıyorum çözümü. Forum taşınırken bu başlık accessle ilgili olmasına rağmen buraya taşınmış ben de altına devam ettim.

Değilse yine kusura bakma. Zaten bu soruya özellikle senevap vereceğini düşünmüştüm...
Allah'ım!...
Yol boyunca bırakma elimi...
Düşerim sonra...


ASE YAZILIM
Cevapla