firebird numeric veya decimal alan
firebird numeric veya decimal alan
numeric 3,2 veya
decimal 5,2 şeklinde alanlar tanımlıyorum..
her ikiside 12345678,32 gibi bir sayıyı kabul ediyor bu normalmi..
yani 3,2 dediğimde uzunluk 3 virgülden sonra 2 basamak demek değilmidir.
decimal 5,2 şeklinde alanlar tanımlıyorum..
her ikiside 12345678,32 gibi bir sayıyı kabul ediyor bu normalmi..
yani 3,2 dediğimde uzunluk 3 virgülden sonra 2 basamak demek değilmidir.
Merhaba,
Hemen Firebird 1.5.3 sürümünde denedim, 12345'i bile kabul etmedi. Bir yerde yanlışınız var...
Evet Numeric ile decimal Firebird'te aynı manaya gelir ve numeric(5,2)--> toplamda 5 haneli rakamları belirtir. Virgülden önce 3, virgülden sonra 2 basamak.
Kolay gelsin.
Hemen Firebird 1.5.3 sürümünde denedim, 12345'i bile kabul etmedi. Bir yerde yanlışınız var...
Evet Numeric ile decimal Firebird'te aynı manaya gelir ve numeric(5,2)--> toplamda 5 haneli rakamları belirtir. Virgülden önce 3, virgülden sonra 2 basamak.
Kolay gelsin.
En son mussimsek tarafından 30 Ağu 2007 11:02 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
mussimsek hocam söylediklerin doğru... yani öyle olması gerekiyor.. ben firebird 2, 2.01, ve en son yeni çıkan 2.02 de denedim..
firebird i kaldırıp yeniden kurdum değişen birşey yok.. numeric veya decimal (3,2) veya (5,2) gibi tanımlamalara 12345678,33 gibi bir sayı kabul ediyor..
firebird 1.5.3 ü denemedim bu arada..
firebird i kaldırıp yeniden kurdum değişen birşey yok.. numeric veya decimal (3,2) veya (5,2) gibi tanımlamalara 12345678,33 gibi bir sayı kabul ediyor..
firebird 1.5.3 ü denemedim bu arada..
Aklıma takıldı, deneyim diye 1.5'u kaldırıp 2.0.2 kurdum. Şöyle bir tablo oluşturdum :
Netice decimal alanında bir kontrol yapmıyor, 123456 gibi bir sayı girebildim. Ama numeric'te kurala uyuyor. Fazla giremedim sayıyı, her seferinde engelledi.
Alanlarınızı numeric'e çevirirseniz sorun gidecektir.
Kolay gelsin.
Kod: Tümünü seç
CREATE TABLE DELPHITURKIYE (
SAYI DECIMAL(3,2) NOT NULL,
SAYI2 NUMERIC(4,2)
);
Alanlarınızı numeric'e çevirirseniz sorun gidecektir.
Kolay gelsin.
bende aynı yapıda bir tablo oluşturdum ibexpert ile (firebird 2.0.2)
ve verileri söylediğin gibi numeric alan için kontrolleri yaptı decimal için yapmadı..
ibexpert i kapatıp sonra tekrar açtım.. ve bu sefer numeric alana veri girerkende kontrol yapmadı..
yani herseferinde aynı işlemleri yapmıyor .. bir tutarsızlık var..
ve verileri söylediğin gibi numeric alan için kontrolleri yaptı decimal için yapmadı..
ibexpert i kapatıp sonra tekrar açtım.. ve bu sefer numeric alana veri girerkende kontrol yapmadı..
yani herseferinde aynı işlemleri yapmıyor .. bir tutarsızlık var..
Merhaba,
Ib Expertin Decimal ve Numeric Sayfası
Öncelikle bir hata mı düzeltiyim. Numeric(5,2) gibi bir ifade de ilk parametre yani 5 toplam rakam sayısını belirtiyormuş. ikinci parametre ise kuruş kısmını. Yani numeric(5,2)'de şöyle sayılar olabilir : 123,45 gibi.
Yukarda verdiğim adresten öğrendiğim kadarıyla Firebird bu bilgileri belirli uzunluklarda depoluyormuş ve bu uzunlukta olduğu sürece girilen rakamlara müsade ediyormuş.
numeric 1-4 : smallint
numeric 5-9 : integer
numeric 10-18 : int64
yani bu değerler içinde müsade ediyor. Diyelim ki numeric 5 tanımladınız, 9'a kadar müsade ediyor. Ben sadece birkaç yerde numeric kullandım ve hiçte dikkatimi çekmedi. İlla sınırlamak istiyorsanız ne yapılabilir bilmiyorum, araştırıyorum konuyu.
Kolay gelsin.
Ib Expertin Decimal ve Numeric Sayfası
Öncelikle bir hata mı düzeltiyim. Numeric(5,2) gibi bir ifade de ilk parametre yani 5 toplam rakam sayısını belirtiyormuş. ikinci parametre ise kuruş kısmını. Yani numeric(5,2)'de şöyle sayılar olabilir : 123,45 gibi.
Yukarda verdiğim adresten öğrendiğim kadarıyla Firebird bu bilgileri belirli uzunluklarda depoluyormuş ve bu uzunlukta olduğu sürece girilen rakamlara müsade ediyormuş.
numeric 1-4 : smallint
numeric 5-9 : integer
numeric 10-18 : int64
yani bu değerler içinde müsade ediyor. Diyelim ki numeric 5 tanımladınız, 9'a kadar müsade ediyor. Ben sadece birkaç yerde numeric kullandım ve hiçte dikkatimi çekmedi. İlla sınırlamak istiyorsanız ne yapılabilir bilmiyorum, araştırıyorum konuyu.
Kolay gelsin.
bu örnekten yola çıkarak şöyle bir tablo tanımladım..
şimdi ben burda verdiğiniz üst sınırlara göre bir tablo tanımladım..
yani tam kısmı 4 virgülden sonraki kısım 2 olması için (numeric(6,2)) şeklinde tanımladım.. diğerinide aynı mantıkla...
fakat burdada sınırların bir anlamı kalmadı çünkü aşağıdaki değerleri girebildim..
NUMALANA_4_2 NUMALANB_9_2
--------------------------------------------------------------------------
123.456,00 .................. 123.456.789.123,32
1.234.567,00 .................. 12.345.678.965.432,00
12.345.678,52 .................. 123.456.789.456.789,00
hiç bir kontrol yapmadı.. iyice kafam karıştı...
ya hocam yoksa şöylemi yapıyor.. siz decimal de yazsanız; numeric de tanımlasanız ben bunu double precision olarak dikkate alıyorum..
Kod: Tümünü seç
CREATE TABLE TABLO1 (
NUMALANA_4_2 NUMERIC(6,2),
NUMALANB_9_2 NUMERIC(11,2)
);
yani tam kısmı 4 virgülden sonraki kısım 2 olması için (numeric(6,2)) şeklinde tanımladım.. diğerinide aynı mantıkla...
fakat burdada sınırların bir anlamı kalmadı çünkü aşağıdaki değerleri girebildim..
NUMALANA_4_2 NUMALANB_9_2
--------------------------------------------------------------------------
123.456,00 .................. 123.456.789.123,32
1.234.567,00 .................. 12.345.678.965.432,00
12.345.678,52 .................. 123.456.789.456.789,00
hiç bir kontrol yapmadı.. iyice kafam karıştı...
ya hocam yoksa şöylemi yapıyor.. siz decimal de yazsanız; numeric de tanımlasanız ben bunu double precision olarak dikkate alıyorum..