Select de sadece sayısal ifadeler gelsin.
Select de sadece sayısal ifadeler gelsin.
S.a.
Select sırasıdnda varchar tanımlı olan bir alana eger harfler girilmişse cast ile floata cevirken hata veriyor.
ya null olacak yada sayı olacak diyor. bunu nasıl çozeriz.
Yada select derken where sadece sayısal degerler girikmiş olanları getir nasıl denir.
teşekkür ederim.
Select sırasıdnda varchar tanımlı olan bir alana eger harfler girilmişse cast ile floata cevirken hata veriyor.
ya null olacak yada sayı olacak diyor. bunu nasıl çozeriz.
Yada select derken where sadece sayısal degerler girikmiş olanları getir nasıl denir.
teşekkür ederim.
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Select de sadece sayısal ifadeler gelsin.
SQL Server'da isNumeric sorgu fonksiyonu vardı, muhtemelen aynısı ya da benzeri FB'de de vardır.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: Select de sadece sayısal ifadeler gelsin.
Ne yazıkkı yok yada ben bulamadım.


Re: Select de sadece sayısal ifadeler gelsin.
Acaba StrtoInt veya StrTointdef gibi bir udf varmi?
Re: Select de sadece sayısal ifadeler gelsin.
Selamlar,
Geç oluyor ama yine de sorayım, neden VARCHAR alanda Numeric bir değer olup olmadığını öğrenmek istiyorsunuz, yani Kullanıcılar oraya hem sayısal hem de karakter bilgi mi giriyor?
Yani nedenini öğrenebilirsek, en azından farklı çözümler koyabiliriz ortaya.
Kolay Gelsin
Geç oluyor ama yine de sorayım, neden VARCHAR alanda Numeric bir değer olup olmadığını öğrenmek istiyorsunuz, yani Kullanıcılar oraya hem sayısal hem de karakter bilgi mi giriyor?
Yani nedenini öğrenebilirsek, en azından farklı çözümler koyabiliriz ortaya.
Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Re: Select de sadece sayısal ifadeler gelsin.
Evet
hem sayısal hemde strıng ıfade oluyor
bu alana arge sonucları gırılıyor. soyleki
1 ıle 100 arasında sayı gırıldıgı gıbı
yok
bulunamadı
uygun
uygun degıl
katkılı
gıbı bilgiler
veya araştırmacının kendi degerleri girebilir
bunun yani sıra
sonuc degerler x2*y de diyebilir
biz sadece toplanabılır degerleri listeleyip toplamını almak istemiştik.
hem sayısal hemde strıng ıfade oluyor
bu alana arge sonucları gırılıyor. soyleki
1 ıle 100 arasında sayı gırıldıgı gıbı
yok
bulunamadı
uygun
uygun degıl
katkılı
gıbı bilgiler
veya araştırmacının kendi degerleri girebilir
bunun yani sıra
sonuc degerler x2*y de diyebilir
biz sadece toplanabılır degerleri listeleyip toplamını almak istemiştik.
Re: Select de sadece sayısal ifadeler gelsin.
Selamlar,
Bence sonuç kısmında Sonuç Açıklama diye bir alan oluşturup bunları oraya ayıklayın. Basit bir delphi programı ile mevcut dataları ayıklayabilirsiniz.
Yani SONUC_INTEGER, SONUC_VARCHAR olarak iki FIELD'a bölün. Daha sonra oradan istediğiniz sorguları çekebilirsiniz. İleride de bu gibi incelemeler için sıklıkla karşılaşabilirsiniz, bence field'ları ayrıştırın.
Kolay Gelsin
Bence sonuç kısmında Sonuç Açıklama diye bir alan oluşturup bunları oraya ayıklayın. Basit bir delphi programı ile mevcut dataları ayıklayabilirsiniz.
Yani SONUC_INTEGER, SONUC_VARCHAR olarak iki FIELD'a bölün. Daha sonra oradan istediğiniz sorguları çekebilirsiniz. İleride de bu gibi incelemeler için sıklıkla karşılaşabilirsiniz, bence field'ları ayrıştırın.
Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Select de sadece sayısal ifadeler gelsin.
Ayrıca mevcut kurulmuş yapı için isNumeric ayarında bir UDF hazırlamanın yolları da aranabilir.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: Select de sadece sayısal ifadeler gelsin.
Neden where ifadesinde sayısal olmayanları elemeyi denemiyorsun
Where alan<>'uygun' and alan<>'Yok' and alan<>'bulunamadı' and v.s.
Büyük ihtimalle string olarak girdiğin ifadeler sabittir.. Sabitse bu şekilde çözebilirsin...
Selamlar..
Where alan<>'uygun' and alan<>'Yok' and alan<>'bulunamadı' and v.s.
Büyük ihtimalle string olarak girdiğin ifadeler sabittir.. Sabitse bu şekilde çözebilirsin...
Selamlar..
Geçip gideriz bizde ağızsız,dilsiz ve sorgusuz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Select de sadece sayısal ifadeler gelsin.
String bilgilerin bir standardı yoktur, araya muhakkak sürpriz değerler girilir veya girilecektir. Programcı olarak String bilgilerin tutarlı omayacağı üzerine temel kurmak daha sağlam bir yapılandırma olacaktır.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: Select de sadece sayısal ifadeler gelsin.
s.a
Zaten amacım where ıle cozmek ama olmuyor. where = sayısal olmuyor
ikinci bir alan acmak işime gelmiyor.
bir daha iki yere gir diyemem ve geri donuk hic olmaz
Zaten amacım where ıle cozmek ama olmuyor. where = sayısal olmuyor
ikinci bir alan acmak işime gelmiyor.
bir daha iki yere gir diyemem ve geri donuk hic olmaz
- mustafaozdemir
- Üye
- Mesajlar: 137
- Kayıt: 19 Haz 2004 01:56
Re: Select de sadece sayısal ifadeler gelsin.
s.a.
şöyle bir çözümde üretebilirsin. tablona kayit_durum diye bir alan ekle. 0 ve 1 değerlerini alsın. delphi tarafından kaydederken kullanıcıların girdiği alanı kontrol et. string ifadeler girilmişse 0 sayısal ifadeler girilmişse 1 değerini atarsın. böylece sorguda da where (kayit_durum=1) diyere sadece sayısal ifadeleri çekersin.
şöyle bir çözümde üretebilirsin. tablona kayit_durum diye bir alan ekle. 0 ve 1 değerlerini alsın. delphi tarafından kaydederken kullanıcıların girdiği alanı kontrol et. string ifadeler girilmişse 0 sayısal ifadeler girilmişse 1 değerini atarsın. böylece sorguda da where (kayit_durum=1) diyere sadece sayısal ifadeleri çekersin.
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Select de sadece sayısal ifadeler gelsin.
Ben hala UDF'den yanayım. FB kullanmadım ama aramayla karşıma ilk çıkan sonucu direk veriyorum.
http://www.experts-exchange.com/Databas ... 82624.html..(Biraz fazla sonlarda ama olsun):
http://www.experts-exchange.com/Databas ... 82624.html..(Biraz fazla sonlarda ama olsun):
CREATE FUNCTION libraryname.isNumeric (@value varchar (15)) RETURNS INTEGER LANGUAGE SQL
BEGIN
declare @number_count int
;
declare @decimal_count int;
set @decimal_count = 0
;
set @number_count = char_length(@value)
;
while (@number_count > 0)
DO
if(substring(@value,@number_count,1)
IN ('0','1','2','3','4','5','6','7','8','9','.'))
Then
set @number_count = @number_count - 1
;
if(substring(@value,@number_count,1) = '.')
Then
set @decimal_count = @decimal_count + 1
;
if(@decimal_count > 1)
Then
return 0
;
end
if;
end if
;
else return 0
;
end if;
end while;
return 1;
end
;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: Select de sadece sayısal ifadeler gelsin.
İlla direk SQL cümlesi ile yapmak istiyorsan şuna benzer bir SQL cümlesi kullanabilirsin:
Değişken 10 karakterden farklıysa ona göre düzenlemelisin.
Kod: Tümünü seç
SELECT
SUM(DEGER) AS DEGER
FROM TABLO
WHERE SUBSTRING(DEGER FROM 1 FOR 1) IN ('1', '2', '3', '4', '5', '6', '7', '8', '9') AND
SUBSTRING(DEGER FROM 2 FOR 1) IN ('1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '', NULL) AND
SUBSTRING(DEGER FROM 3 FOR 1) IN ('1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '', NULL) AND
SUBSTRING(DEGER FROM 4 FOR 1) IN ('1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '', NULL) AND
SUBSTRING(DEGER FROM 5 FOR 1) IN ('1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '', NULL) AND
SUBSTRING(DEGER FROM 6 FOR 1) IN ('1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '', NULL) AND
SUBSTRING(DEGER FROM 7 FOR 1) IN ('1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '', NULL) AND
SUBSTRING(DEGER FROM 8 FOR 1) IN ('1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '', NULL) AND
SUBSTRING(DEGER FROM 9 FOR 1) IN ('1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '', NULL) AND
SUBSTRING(DEGER FROM 10 FOR 1) IN ('1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '', NULL)