NUMERIC
Ushbu qo'llanmada siz raqamli ma'lumotlarni saqlash uchun PostgreSQL NUMERIC
turi haqida bilib olasiz.
NUMERIC
turi ko'p sonli raqamlarni saqlashi mumkin. Odatda, siz pul miqdori yoki miqdori kabi aniqlikni talab qiladigan raqamlar uchun NUMERIC
turidan foydalanasiz.
Quyida NUMERIC turining sintaksisi tasvirlangan:
Ushbu sintaksisda:
Aniqlik(
precision
) raqamlarning umumiy sonidirMasshtab(
scale
) kasr qismidagi raqamlar soni.
Masalan, 1234.567
raqami 7
aniqlik va 3
shkalaga ega.
NUMERIC
turi o'nli kasrdan oldin 131,072
raqamgacha bo'lgan qiymatni o'nli kasrdan keyin 16,383
ta raqamga ega bo'lishi mumkin.
NUMERIC
turining shkalasi nol yoki positive bo'lishi mumkin.
Mana, nol masshtabli NUMERIC tipidagi sintaksisi:
Agar siz aniqlik va masshtabni o'tkazib yuborsangiz, har qanday aniqlikni saqlashingiz va yuqorida aytib o'tilgan aniqlik va o'lchov chegarasiga qadar o'lchashingiz mumkin.
PostgreSQL-da NUMERIC
va DECIMAL
turlari ekvivalentdir va ikkalasi ham SQL standartining bir qismidir.
Agar aniqlik talab etilmasa, NUMERIC
turidan foydalanmasligingiz kerak, chunki NUMERIC
qiymatlari bo'yicha hisob-kitoblar odatda butun sonlar, floatlar va doublelarga qaraganda sekinroq.
PostgreSQL NUMERIC misollar
Keling, PostgreSQL NUMERIC
turidan foydalanishga misollar keltiraylik.
1. Raqamli qiymatlarni saqlash
Agar siz qiymatni NUMERIC
ustunining e'lon qilingan shkalasidan kattaroq shkala bilan saqlasangiz, PostgreSQL qiymatni belgilangan kasr raqamlariga yaxlitlaydi. Masalan:
Birinchi, products
deb nomlangan yangi jadval yarating:
Ikkinchi, price
ustunida e'lon qilingan shkaladan oshib ketadigan narxlari bo'lgan ba'zi mahsulotlarni kiriting:
price
ustunining shkalasi 2 bo'lgani uchun PostgreSQL 500.215
qiymatini 500.22
gacha va 500.214
qiymatini 500.21
gacha yaxlitlaydi:
Quyidagi so'rov products
jadvalining barcha qatorlarini qaytaradi:
Agar siz aniqligi e'lon qilingan aniqlikdan oshib ketadigan qiymatni saqlasangiz, PostgreSQL quyidagi misolda ko'rsatilganidek xatoni keltirib chiqaradi:
2. PostgreSQL NUMERIC
turi va NaN
NUMERIC
turi va NaN
Raqamli qiymatlarni saqlashdan tashqari, NUMERIC
turida NaN
nomli maxsus qiymat ham bo'lishi mumkin, bu raqam emas. Quyidagi misol mahsulot identifikatori 1 narxini NaN
ga yangilaydi:
E'tibor bering, yuqoridagi UPDATE
bayonotida ko'rsatilganidek, NaN
ni o'rash uchun bitta tirnoqdan foydalanish kerak.
Quyidagi so'rov products
jadvali ma'lumotlarini qaytaradi:
Odatda, NaN
hech qanday raqamga, shu jumladan o'ziga teng emas. Bu NaN = NaN
ifodasi false
ekanligini anglatadi.
Biroq, ikkita NaN
qiymati teng va NaN
boshqa raqamlardan kattaroqdir. Ushbu dastur PostgreSQL-ga NUMERIC
qiymatlarni saralash va ularni daraxtga asoslangan indekslarda ishlatish imkonini beradi.
Quyidagi so'rov mahsulotlarni price bo'yicha saralaydi:
Chiqish NaN
ning 500,21
dan katta ekanligini ko'rsatadi
Xulosa
Aniqlikni talab qiladigan raqamlarni saqlash uchun PostgreSQL
NUMERIC
maʼlumotlar turlaridan foydalaning.
Last updated