Ceviz Forum

Geri Dön   Ceviz Forum > Programlama > Veritabanları & SQL

Cevapla
 
LinkBack Seçenekler
Eski 26/11/2006, 17:10   #1 (permalink)
Üye
 
sadist_sniper Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 11/2002
Yer: Ankara
Mesaj: 496
Varsayılan String'i sayı ile karşılaştırma

şimdi arkadaşlar elimde, varchar2(255) tipinde bir kolon var. bu kolondaki değerler duruma göre karakter dizisi ya da sayı olabiliyor.
bu değerler sayı olduğu zamanki durumlar için şöyle bir sorgu yazmam gerekiyor

"select id from tablo where deger < 2 "

ama tabi burada "deger" kolonu string olduğu için geçersiz sayı dizini gibi bir hata veriyor.

bu konuda ansi sql'de nasıl bir çözüm üretebilirim?
__________________
Eğer insanlar kendilerini yaralayacak güce sahipse, neden kendilerini iyileştirecek güce sahip olmasınlar ki!!!
sadist_sniper hatta değil   Alıntı Yaparak Yanıtla
Eski 26/11/2006, 17:38   #2 (permalink)
Luke is back...
 
mkarabulut Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 05/2002
Yer: ../Dark_Side
Mesaj: 2,443
Varsayılan

Eğer değerin sayı olup olmadığı kontrolünü gözardı edersek, sadece CAST ile bu işi çözebilirsin.

SELECT id FROM tablo WHERE CAST(deger AS INT) < 2
__________________
Do or do not. There is no try.
mkarabulut hatta değil   Alıntı Yaparak Yanıtla
Eski 26/11/2006, 17:44   #3 (permalink)
Üye
 
sadist_sniper Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 11/2002
Yer: Ankara
Mesaj: 496
Varsayılan

bunu denemiştim, şöyle bir sorunla karşılaşıyorum
buradaki deger kolonunda null değerler olma olasılığı da var
o zaman cast patlıyor.
__________________
Eğer insanlar kendilerini yaralayacak güce sahipse, neden kendilerini iyileştirecek güce sahip olmasınlar ki!!!
sadist_sniper hatta değil   Alıntı Yaparak Yanıtla
Eski 26/11/2006, 17:55   #4 (permalink)
Üye
 
sadist_sniper Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 11/2002
Yer: Ankara
Mesaj: 496
Varsayılan

Kod:
SELECT   cast (deger_tr as int)
    FROM dokuman d,
         versiyon v,
         versiyon_x_dokumantpknyaln vxd,
         dokumantipikunyealani dtka
   WHERE vxd.dokumantipikunyealani_id = dtka.ID
     AND dtka.dokumantipialanturu_id = 2
     AND v.dokuman_id = d.ID
     AND v.ID = vxd.versiyon_id
     AND vxd.aktif = 1
     and vxd.DEGER_TR is not null
mesela bu sorgu güzelce çalışıyor
ama sonuna "and cast(deger_tr as int) <2"
ekleyince "ora-01722, geçersiz sayı" hatası veriyor.
bu hata da, sayıya dönüştürmek istediğimiz dizide numerik olmayan şeyler olunca veriliyor.
__________________
Eğer insanlar kendilerini yaralayacak güce sahipse, neden kendilerini iyileştirecek güce sahip olmasınlar ki!!!
sadist_sniper hatta değil   Alıntı Yaparak Yanıtla
Eski 28/11/2006, 13:37   #5 (permalink)
Luke is back...
 
mkarabulut Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 05/2002
Yer: ../Dark_Side
Mesaj: 2,443
Varsayılan

O zaman IF benzeri bir yapı kuracaksın, oracle'da ISNULL, IF, CASE tarzı komutların karşıluğını şu an bilmediğim için bi şey diyemiyorum.

Ama sql server olsaydı şöyle yazardım

SELECT id FROM tablo WHERE ISNULL(deger, -1, CAST(deger AS INT)) < 2


veya mySQL için
SELECT id FROM tablo WHERE IF(deger IS NULL, -1, CAST(deger AS INT)) < 2
__________________
Do or do not. There is no try.
mkarabulut hatta değil   Alıntı Yaparak Yanıtla
Eski 28/11/2006, 13:40   #6 (permalink)
Luke is back...
 
mkarabulut Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 05/2002
Yer: ../Dark_Side
Mesaj: 2,443
Varsayılan

Hmm. İkinci bir sorun içeriğin numeric olup olmaması sanırım. Bunu ilk mesajımda dediğim gibi gözardı etmiştim, buna ancak o string degeri kontrol edecek bir fonksiyonla çözüm getirebilirsin.

fonksiyon
* string içindeki değerler sadece rakamlar ise true
* değilse false döndürecek.

Ms Sql server ve mysql için böyle bir fonksiyon yok, ama mysql için düzenli ifadeler ile bi şeyler yapılabilir. Fakat sql server için düzenli ifadeler yok. Belki custom function yazılabilir.

vaktim olursa buraya yazabilirim bi şeyler.
__________________
Do or do not. There is no try.
mkarabulut hatta değil   Alıntı Yaparak Yanıtla
Cevapla

Bookmarks

Seçenekler

Mesaj Yazma Hakları
Yeni mesajgöndermezsiniz
Cevap yazamazsınız
Dosya ekleyemezsiniz
Mesajınızı düzenleyemezsiniz

BB code is Açık
[IMG] kodu Açık
HTML kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Benzer Konular
Konu Konuyu açana göre Forum Cevap En Son Mesaj
string'i arraya çevirme... pirilti PHP 11 14/02/2007 19:31
karşılaştırma yelegin Veritabanları & SQL 3 08/12/2006 15:27
Karşılaştırma :( avengerstyle Veritabanları & SQL 3 28/11/2006 10:33
TDateTime Karşılaştırma Cenko C / C++ 0 06/06/2006 14:00
String'i kısaltmak....... GmX PHP 14 06/10/2003 15:37


Forum saati Türkiye saatine göredir. GMT +3. Şu anda saat 03:29.

Reklamlar & Desteklenenler
Hassas Valf | Hassas Kaplama | Antalyamız | Gazete | Ticari Bilişim | Hakan Müştak | Rüya Tabirleri | Kadın | Hastalıklar | Cepte msn ve e-posta | Webmaster | Antalya Aupair | Turkish Property Antalya | Forum | Chat | Perde | Adsl | Araba | bolindir.com | guncelle.com | livescore | Web Tasarım | evden eve nakliyat | forum | evden eve | sohbet | Resimcim| Kalifiye İnsan Kaynakları | Web Tasarım | Oyun | Yusuf KOÇ | Akın Yorulmaz | şiir | UFO | Web Tasarım | Oyunlar | Canlı Tv |


Forum Yazılımı: vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright ©2001 - 2008, Ceviz.net