ভাল, আমি পছন্দ করি MONEY! এটি তুলনায় একটি বাইট কম সস্তা DECIMALএবং গণনাগুলি দ্রুত সম্পাদন করে কারণ (আচ্ছাদনগুলির নীচে) সংযোজন এবং বিয়োগ অপারেশনগুলি মূলত পূর্ণসংখ্যার ক্রিয়াকলাপ। @ এসকিউএলমেনিসের উদাহরণ — যা অজান্তের জন্য একটি দুর্দান্ত সতর্কতা INTe ইগারদের ক্ষেত্রেও সমানভাবে প্রয়োগ করা যেতে পারে , যেখানে ফলাফলটি শূন্য হবে। তবে এটি পূর্ণসংখ্যার ব্যবহার না করার কোনও কারণ নয় — যেখানে উপযুক্ত ।
সুতরাং, এটি পুরোপুরি 'নিরাপদ' এবং MONEYআপনি যখন ব্যবহার করছেন সেটি ব্যবহার করার উপযুক্ত এবং MONEYএটি অনুসরণ করা গাণিতিক নিয়ম অনুসারে ব্যবহার করুন ( INTইজার হিসাবে একই )।
এটা ভালো হবে যদি SQL সার্ভার বিভাগ এবং গুণ উন্নীত MONEYমধ্যে s ' DECIMALগুলি (বা FLOAT- সম্ভবত, কিন্তু তারা এই কাজ করতে পছন্দ করে করা হয়নি গুলি?); বা INTএগারদের FLOATভাগ করার সময় তারা প্রচার করতে পছন্দ করেনি ।
MONEYকোন যথার্থ সমস্যা আছে; যে DECIMALগুলি একটি বৃহত্তর অন্তর্বর্তী গণনার সময় ব্যবহৃত টাইপ মাত্র একটি করে টাইপ ব্যবহার 'বৈশিষ্ট্য' আছে পেতে (এবং আমি আসলে নিশ্চিত কতদূর যে 'বৈশিষ্ট্য' প্রসারিত নই)।
নির্দিষ্ট প্রশ্নের উত্তর দিতে, একটি "বাধ্যতামূলক কারণ"? ঠিক আছে, আপনি যদি এমন কোনও SUM(x)ক্ষেত্রে নিখুঁত সর্বাধিক পারফরম্যান্স চান বা যেখানে xহতে পারে তবে তার কিনারা থাকবে।DECIMALMONEYMONEY
এছাড়াও, ভুলে যাবেন না যে এটি ছোট চাচাত ভাই, SMALLMONEY4 বাইট ঠিক করুন, তবে এটি সর্বোচ্চ 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চেয়ে কম বৃত্তাকার MONEYan একটি পূর্ণসংখ্যার মতো।)
DECIMAL(19, 4)একটি জনপ্রিয় পছন্দ পরীক্ষা এই এছাড়াও পরীক্ষা এখানে পৃথিবী মুদ্রা বিন্যাস ব্যবহার কতগুলি দশমিক স্থান সিদ্ধান্ত নিতে, আশা করতে সাহায্য করে।