ভাল, আমি পছন্দ করি MONEY
! এটি তুলনায় একটি বাইট কম সস্তা DECIMAL
এবং গণনাগুলি দ্রুত সম্পাদন করে কারণ (আচ্ছাদনগুলির নীচে) সংযোজন এবং বিয়োগ অপারেশনগুলি মূলত পূর্ণসংখ্যার ক্রিয়াকলাপ। @ এসকিউএলমেনিসের উদাহরণ — যা অজান্তের জন্য একটি দুর্দান্ত সতর্কতা INT
e ইগারদের ক্ষেত্রেও সমানভাবে প্রয়োগ করা যেতে পারে , যেখানে ফলাফলটি শূন্য হবে। তবে এটি পূর্ণসংখ্যার ব্যবহার না করার কোনও কারণ নয় — যেখানে উপযুক্ত ।
সুতরাং, এটি পুরোপুরি 'নিরাপদ' এবং MONEY
আপনি যখন ব্যবহার করছেন সেটি ব্যবহার করার উপযুক্ত এবং MONEY
এটি অনুসরণ করা গাণিতিক নিয়ম অনুসারে ব্যবহার করুন ( INT
ইজার হিসাবে একই )।
এটা ভালো হবে যদি SQL সার্ভার বিভাগ এবং গুণ উন্নীত MONEY
মধ্যে s ' DECIMAL
গুলি (বা FLOAT
- সম্ভবত, কিন্তু তারা এই কাজ করতে পছন্দ করে করা হয়নি গুলি?); বা INT
এগারদের FLOAT
ভাগ করার সময় তারা প্রচার করতে পছন্দ করেনি ।
MONEY
কোন যথার্থ সমস্যা আছে; যে DECIMAL
গুলি একটি বৃহত্তর অন্তর্বর্তী গণনার সময় ব্যবহৃত টাইপ মাত্র একটি করে টাইপ ব্যবহার 'বৈশিষ্ট্য' আছে পেতে (এবং আমি আসলে নিশ্চিত কতদূর যে 'বৈশিষ্ট্য' প্রসারিত নই)।
নির্দিষ্ট প্রশ্নের উত্তর দিতে, একটি "বাধ্যতামূলক কারণ"? ঠিক আছে, আপনি যদি এমন কোনও SUM(x)
ক্ষেত্রে নিখুঁত সর্বাধিক পারফরম্যান্স চান বা যেখানে x
হতে পারে তবে তার কিনারা থাকবে।DECIMAL
MONEY
MONEY
এছাড়াও, ভুলে যাবেন না যে এটি ছোট চাচাত ভাই, SMALLMONEY
4 বাইট ঠিক করুন, তবে এটি সর্বোচ্চ 214,748.3647
পরিমাণে দেয় - যা অর্থের জন্য খুব ছোট — এবং তাই প্রায়শই ভাল ফিট হয় না।
বৃহত্তর মধ্যবর্তী ধরনের ব্যবহার করে চারপাশের বিষয়টি প্রমাণ করার জন্য, আপনি যদি মধ্যবর্তীটিকে স্পষ্টভাবে কোনও ভেরিয়েবলের জন্য বরাদ্দ করেন DECIMAL
তবে একই সমস্যা ভোগ করে:
declare @a decimal(19,4)
declare @b decimal(19,4)
declare @c decimal(19,4)
declare @d decimal(19,4)
select @a = 100, @b = 339, @c = 10000
set @d = @a/@b
set @d = @d*@c
select @d
উত্পাদিত হয় 2950.0000
(ঠিক আছে, সুতরাং কমপক্ষে DECIMAL
চেয়ে কম বৃত্তাকার MONEY
an একটি পূর্ণসংখ্যার মতো।)
DECIMAL(19, 4)
একটি জনপ্রিয় পছন্দ পরীক্ষা এই এছাড়াও পরীক্ষা এখানে পৃথিবী মুদ্রা বিন্যাস ব্যবহার কতগুলি দশমিক স্থান সিদ্ধান্ত নিতে, আশা করতে সাহায্য করে।