String den numeric dönüşüm.

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
Berdem
Üye
Mesajlar: 431
Kayıt: 28 Tem 2003 12:28

String den numeric dönüşüm.

Mesaj gönderen Berdem »

Merhaba Arkadaşlar,
FB1.5 ve ibexpert kullanıyorum.Table referans alanımda 2,5 vey 6,33 gibi değerlerim var.Bu aynı tabloda alan açıp XXXX gibi ona değerleri numeric veya decimal(4,2) aktarmak istiyorum.Bunun için ibexpertte bu sorguları çalıştırdım.2.5 yerine 25 alıyorum.Yardımlarnızı rica ediyorum.

Kod: Tümünü seç

update islem set islem.xxxx=cast(islem.referans as decimal(4,2));
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Kod: Tümünü seç

select referans, cast(referans as numeric(9,2)) from islem
gibi bir sorgu ile cast ile dönen sonuçları karşılaştırabilirsin. Kendi denememde herhangi bir problem yok. Tablodaki değer gerçekten onalıklı bir sayı ise basamak sayısını küçük vermenden dolayı böyle bir sorun olmuş olabilir :?: Ya da sonucu 10 a böl :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Berdem
Üye
Mesajlar: 431
Kayıt: 28 Tem 2003 12:28

Mesaj gönderen Berdem »

:D @rsimsek sanırım sorgu ile update arasında hiç fark yok.Bir kaç deneme yaptım.Diyelim örnek olarak string alanda degerleriniz 6.23 , 62.3 olsun bu alanlarda cast sorgusu ile alacağınız sonuçlar size olarak 623.00,623.00 olarak size geri dönüyor.10 bölmeyi bende denedim.Sonuç olarak :shock: 62.3 ,62.3 olarak karşılaştım.Demek istemiyorum üstadlar kadar derin bilgiye sahip değilim.Burda firebird sorgusunu doğru döndürmüyor.Virgül ayıracını doğru konumlandırmıyor.Bu konuyu internette araştırdım.Sanırım bir udf yazıp onunla çözmek olacak.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Önceki referans dediğiniz alanın tipi nedir? belki de ondalık ayıraç/decimal point ile ilgili bir sorun vardır :?: Eğer varchar bir alan ise ve ondalık ayıraç uygun değilse alınan sonuç normaldir :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Berdem
Üye
Mesajlar: 431
Kayıt: 28 Tem 2003 12:28

Mesaj gönderen Berdem »

Başlıkta belirttiğim gibi string yani varchar bir alan.Ayırac doğru "," belirtilmiş. Sonra farklı bir tabloda deneyim dedim.

Kod: Tümünü seç

CREATE GENERATOR GEN_NEW_TABLE_ID;

CREATE TABLE NEW_TABLE (
    SIRA  INTEGER NOT NULL,
    AAAA  VARCHAR(10),
    BBBB  DECIMAL(9,2)
);
AAAA ya 6,88 ve 68,8 atadım.Sonuç olarak 688,00 ve 688,00 değerlerini verdi. Kafama takıldı AAAA ayıraçları "." olarak 6.88 ve 68.8 belirteyim dedim. Sonuç bu sefer doğru olarak :shock: 6,88 ve 68,8 olarak döndü. Sql her an farklı süprizlerle dolu.Teşekkürler...
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

, (virgül) ü çeviremediği için ihmal etmiş :wink: Alanda başka harflerde olsa onları da ihmal edecekti.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla