মাইএসকিউএল ডেসিমাল কীভাবে ব্যবহার করবেন?


176

আমি মাইএসকিউএল এর ডেসিমাল সম্পর্কে খুব একটা উপলব্ধি পেতে পারি না। আমার সারিটি 00.0001 থেকে 99.9999 পর্যন্ত যেকোন জায়গায় থাকতে সক্ষম হতে হবে। আমি এটির মতো কাজ করার জন্য এটি কীভাবে গঠন করব?



4
আপনার সত্যিকারের সঠিক উত্তরটি গ্রহণ করা উচিত। বর্তমানে গৃহীত উত্তরটি ভুল।
ওলহভস্কি

2
এখানে এসে শেষ করে দাবিটি উত্তরটি পড়ুন যে সিদ্ধান্ত নেওয়া সম্ভব নয় S এটির জন্য সঠিক অনুমানের জন্য নীচে নতুন উত্তরটি দেখুন।
মার্কাস এও

উত্তর:


439

ডাবল কলামগুলি ডেসিমাল কলামগুলির মতো নয় এবং আপনি আর্থিক তথ্যের জন্য ডাবল কলামগুলি ব্যবহার করলে আপনি সমস্যায় পড়বেন ।

ডবল আসলে শুধু একটি ডবল স্পষ্টতা (64 বিট পরিবর্তে 32 বিট) এর সংস্করণ ভাসা । ভাসমান পয়েন্ট সংখ্যাগুলি হ'ল প্রকৃত সংখ্যার আনুমানিক উপস্থাপনা এবং সেগুলি সঠিক নয়। প্রকৃতপক্ষে, 0.01 এর মতো সাধারণ সংখ্যার ফ্লোট বা ডাবল প্রকারের মধ্যে সঠিক প্রতিনিধিত্ব নেই।

ডেসিমাল কলামগুলি হ'ল উপস্থাপনা, তবে তারা সম্ভাব্য সংখ্যার অনেক কম পরিসরের জন্য অনেক বেশি জায়গা নেয়। 0.0001 থেকে 99.9999 পর্যন্ত মানগুলি রাখতে সক্ষম কলাম তৈরি করতে আপনি যেমন অনুরোধ করেছেন নীচের বিবৃতিটি প্রয়োজন

CREATE TABLE your_table
(
    your_column DECIMAL(6,4) NOT NULL
);

কলাম সংজ্ঞাটি ডেসিমাল (এম, ডি) ফর্ম্যাট অনুসরণ করে যেখানে এম সর্বাধিক সংখ্যার ( যথার্থতা ) এবং ডি দশমিক বিন্দুর ( স্কেল ) ডানদিকে সংখ্যার সংখ্যা ।

এর অর্থ হ'ল পূর্ববর্তী কমান্ডটি একটি কলাম তৈরি করে যা -99.9999 থেকে 99.9999 পর্যন্ত মান গ্রহণ করে। আপনি 0.0000 থেকে 99.9999 অবধি একটি অনির্দিষ্ট ডিসিসিমাল কলামও তৈরি করতে পারেন।

মাইএসকিউএল ডিসমিমাল সম্পর্কিত আরও তথ্যের জন্য অফিসিয়াল ডক্স সর্বদা একটি দুর্দান্ত সংস্থান।

মনে রাখবেন যে এই সমস্ত তথ্য মাইএসকিউএল 5.0.3 এবং এর বেশি সংস্করণের জন্য সত্য। আপনি যদি পূর্ববর্তী সংস্করণগুলি ব্যবহার করে থাকেন তবে আপনার সত্যিকারের আপগ্রেড করা উচিত।


17
আপনার উত্তর ভোট দিয়েছেন। আপনার উত্তরটি সঠিক, অন্য উত্তরটি নয় (যেহেতু এটি "ডাবল = দশমিক" দাবি করে)। ডেসিমাল হ'ল একটি নির্দিষ্ট পয়েন্টের ধরণের যা হুবহু মান সহ এবং এর প্রতিশব্দগুলি হ'ল NUMERIC, DEC এবং FIXED। ডাবল নয়, কারণ ডাবল একটি ভাসমান-পয়েন্ট টাইপ যা আনুমানিক সংখ্যার ডেটা মানগুলিকে উপস্থাপন করে। ডেসিমাল (<1-65>, <0-30>) ব্যবহার করার সময়, প্রথম প্যারামিটারটি হ'ল সংখ্যার সংখ্যা, দ্বিতীয় দশমিক বিন্দুর ডানদিকে সংখ্যাগুলির সংখ্যা।
নরবার্ট

2
হ্যাঁ তুমিই ঠিক. নোট করুন যে মাইএসকিউএল 5.0.3 এর পরে, dev.mysql.com/doc/refman/5.1/en/precision-math-example.html
আজ্রিয়াল

1
পোস্টারটিতে দশমিক ক্ষেত্রের জন্য জিজ্ঞাসা করা হয়েছিল যা 0.0001 এবং 99.9999 এর মধ্যে মান ধারণ করে। আমি স্পষ্ট করার জন্য কিছু অতিরিক্ত তথ্য যুক্ত করেছি যে ক্ষেত্রটি তৈরি করেছে বাস্তবে -99.9999 থেকে 99.9999 পর্যন্ত মানগুলি সমর্থন করে। সাহায্য করার জন্য ধন্যবাদ! মাইএসকিউএল সংস্করণ অস্বীকারও যুক্ত করা হয়েছে।
অ্যালেক্স রেকারি

1
আপনি বলেছিলেন যে "একটি" স্বাক্ষরযুক্ত "ডেসিমাল কলাম" তৈরি করার কোনও উপায় নেই, তবুও আপনার কোড উদাহরণটি "ডিসেমিমাল (6,4) UNSIGNED NOT NULL" নির্দেশ করে। কেন?
লিয়াং

3
@ অ্যালেক্সারেকেরি আমি মনে করি ঠিক একটি জরিমানা ডিসিসিমাল অনিশ্চিত তৈরি করতে সক্ষম হব; এবং মাইএসকিউএল 5.x জন্য ম্যানুয়াল একমত: DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]। এটি নেতিবাচক মানগুলির জন্য সীমার বাইরে ত্রুটি ফিরিয়ে দেবে। আপনি একইভাবে স্বাক্ষরযুক্ত ফ্লোট এবং ডাবল তৈরি করতে পারেন can ম্যানুয়াল: dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html
মার্কাস এও

64

যদিও উপরের উত্তরগুলি সঠিক বলে মনে হচ্ছে, এটি কীভাবে কাজ করে তার একটি ধারণা দেওয়ার জন্য কেবল একটি সহজ ব্যাখ্যা।

মনে করুন আপনার কলামটি সেট করা আছে DECIMAL(13,4)। এর অর্থ হ'ল কলামটিতে মোট 13 টি সংখ্যার আকার থাকবে যেখানে এর মধ্যে 4 টি যথার্থ প্রতিনিধিত্বের জন্য ব্যবহৃত হবে।

সুতরাং, সংক্ষেপে, সেই কলামটির জন্য আপনার সর্বাধিক মান হবে: 999999999.9999


1
সেরা উত্তর এখানে
জুলিয়ান সিলভেস্ট্রি

15

মন্তব্যে সঠিক সমাধান রয়েছে তবে সেগুলিকে একটি একক উত্তরে সংক্ষিপ্ত করতে:

আপনাকে ডেসিমাল (6,4) ব্যবহার করতে হবে।

তারপরে আপনার দশমিক পয়েন্ট (স্কেল) এর পরে 2 এবং 4 আগে মোট 6 টি সংখ্যা থাকতে পারে। অনুযায়ী অন্তত এই


6

মাইএসকিউএল 5.x স্পেসিফিকেশন দশমিক ডাটাটাইপ জন্য: DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]। উপরের উত্তরটি এই বলে ভুল যে স্বাক্ষরযুক্ত দশমিক সম্ভব নয়।

6 টি সংখ্যা, যার মধ্যে 4 দশমিক হয় একটি মোট দৈর্ঘ্য সঙ্গে একটি ক্ষেত্র শুধুমাত্র স্বাক্ষরবিহীন দশমিক যার ফলে নির্ধারণ করতে, আপনি ব্যবহার হবে: DECIMAL (6,4) UNSIGNED

আপনি একইভাবে স্বাক্ষরযুক্ত (যেমন নেতিবাচক নয়) ফ্লোট এবং ডাবল ডেটাটাইপ তৈরি করতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.