এসকিউএল সার্ভারে দশমিক মানগুলি কীভাবে সংরক্ষণ করবেন?


272

আমি এসকিউএল সার্ভারে একটি কলামের দশমিক ডেটা ধরণের বের করার চেষ্টা করছি। আমার 15.5, 26.9, 24.7, 9.8, ইত্যাদির মতো মানগুলি সঞ্চয় করতে সক্ষম হতে হবে

আমি নিয়োগ decimal(18, 0) কলামের ডেটা টাইপকে কিন্তু এটি আমাকে এই মানগুলি সংরক্ষণ করতে দেয় না।

এটি করার সঠিক উপায় কী?

উত্তর:


513

DECIMAL(18,0) দশমিক বিন্দুর পরে 0 সংখ্যার অনুমতি দেবে।

এর মতো কিছু ব্যবহার করুন DECIMAL(18,4)পরিবর্তে এর করা উচিত!

এটি আপনাকে মোট 18 টি অঙ্ক দেয় , যার মধ্যে 4 দশমিক পয়েন্টের পরে (এবং 14 দশমিক পয়েন্টের আগে)।


@মার্ক_স, কলাম ডেটাটাইপ যেখানে দশমিক (4,2) হয় সেখানে কোনও "4.5" মূল্য সঞ্চয় করতে পারে? আমি যখন মানটি সন্নিবেশ করি তখন এটি "4.50"
অরুন

1
@ আরঙ্কুমারটিকে: decimal(4,2)দশমিক বিন্দুর পরে 2 টি আগে এবং 2 ডিজিটের অনুমতি দেয়। "4.5" কোনও সমস্যা সংরক্ষণ করা যায় না - এবং সংখ্যায় "4.5" এবং "4.50" অভিন্ন
marc_s

3
@ আরঙ্কুমারটিকে: কেন এগুলি আলাদা হওয়া উচিত ?? উভয় হল "সাড়ে চার" - মান একই .এবং কোন একটি ব্যবহার করবেন না varcharএকটি দশমিক মান সংরক্ষণ করতে !!
marc_s

1
আমি জানি এটি একটি পুরানো আলোচনার বিষয় কিন্তু @ অরঙ্কুমারটিকে '4.0.০৫' এবং '৪.৪' হতে পারে না।
শেলবি 115

2
হ্যাঁ, 18 ও 19 উভয়ই 9 বাইট ব্যবহার করলে 18 টি কেন এত জনপ্রিয় (যেমন ডিফল্ট (18,0)) ?
xr280xr

136

আপনার ব্যবহার করা উচিত নিম্নলিখিত:

DECIMAL(m,a)

m আপনার দশমিকের মতো মোট সংখ্যার সংখ্যা।

a দশমিক বিন্দুর পরে আপনার সংখ্যার সর্বাধিক সংখ্যা।

http://www.tsqltutorials.com/datatypes.php এর সমস্ত ডেটাটাইপগুলির জন্য বর্ণনা রয়েছে।


3
এটি সাধারণত ডেসিমাল (পি, গুলি) হিসাবে চিহ্নিত করা হয় যেখানে পি যথার্থতা (একটি সংখ্যায় সর্বাধিক অনুমোদিত সংখ্যা) এবং স্কেলের জন্য দাঁড়ায় (দশমিক বিন্দুর পরে সর্বাধিক অনুমোদিত সংখ্যা)।
আরবিটি

লিঙ্কটি মারা গেছে
ইব্রাহিম মাহরির

43

এর সেটিংস Decimalহ'ল তার যথার্থতা এবং স্কেল বা সাধারণ ভাষায়, কোনও সংখ্যায় কতগুলি সংখ্যা থাকতে পারে এবং দশমিক পয়েন্টের ডানদিকে আপনি কতগুলি সংখ্যা রাখতে চান।

সুতরাং আপনি যদি এটি রাখা PIহয় Decimal(18,0)হিসাবে রেকর্ড করা হবে 3?

আপনি করা PIএকটি মধ্যে Decimal(18,2)এটি হিসাবে রেকর্ড করা হবে 3.14?

আপনি করা তাহলে PIমধ্যে Decimal(18,10)যেমন রেকর্ড করা 3.1415926535


35

বেশিরভাগ সময়, আমি দশমিক (9,2) ব্যবহার করি যা স্কুএল দশমিক ধরণের মধ্যে সর্বনিম্ন স্টোরেজ (5 বাইট) লাগে।


যথার্থতা => স্টোরেজ বাইট

  • 1 - 9 => 5
  • 10-19 => 9
  • 20-28 => 13
  • 29-38 => 17

এটি 0 থেকে 9 999 999.99 (দশমিক পয়েন্ট = মোট 9 ডিজিটের পিছনে 7 ডিজিটের ইনফ্রন্ট + 2 ডিজিট) সঞ্চয় করতে পারে যা বেশিরভাগ মানের জন্য বড়।


9

আপনি এটি চেষ্টা করতে পারেন

decimal(18,1)

সংখ্যার দৈর্ঘ্য পুরোপুরি 18 হওয়া উচিত dec দশমিক বিন্দুর পরে সংখ্যার দৈর্ঘ্য কেবল 1 হওয়া উচিত এবং এর চেয়ে বেশি নয়।


6

মাইএসকিউএল-এ ডিবি decimal(4,2)কেবলমাত্র মোট 4 টি সংখ্যায় প্রবেশ করতে দেয়। আপনি যেমন দেখতে পাচ্ছেন decimal(4,2), এর অর্থ আপনি দশমিক বিন্দু ধরে রাখার জন্য দুটি অঙ্ক বোঝাতে মোট 4 টি অঙ্ক সন্নিবেশ করতে পারেন।

সুতরাং, আপনি যদি মাইএসকিউএল ডাটাবেজে 100.0 লিখেন তবে এটি "কলামের জন্য আউট রেঞ্জের মান" এর মতো একটি ত্রুটি প্রদর্শন করবে।

সুতরাং, আপনি কেবল এই সীমাতে প্রবেশ করতে পারেন: 00.00 থেকে 99.99 পর্যন্ত।


2
প্রশ্নটি স্পষ্টভাবে মাইক্রোসফ্ট এসকিউএল সার্ভার নির্দিষ্ট করার সময় কেন এটি প্রাসঙ্গিক?
জেসি কেডেল

3

অন্যান্য উত্তর সঠিক। আপনার উদাহরণগুলি ধরে নিলে আপনি যা চান তা সম্ভাবনার পুরো পরিসীমা প্রতিফলিত করে DECIMAL(3, 1)। অথবা, DECIMAL(14, 1)মোট 14 টি সংখ্যার অনুমতি দেবে। কী যথেষ্ট তা নিয়ে ভাবনা আপনার কাজ।


1
request.input("name", sql.Decimal, 155.33)              // decimal(18, 0)
request.input("name", sql.Decimal(10), 155.33)          // decimal(10, 0)
request.input("name", sql.Decimal(10, 2), 155.33)       // decimal(10, 2)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.