দুটি দশমিক স্থান এসকিউএল সার্ভার সহ একটি সংখ্যা লিখুন


157

এসকিএল সার্ভারের জন্য দুটি দশমিক স্থান সহ আপনি একটি নম্বর কীভাবে লিখবেন?

উত্তর:


213

এটা চেষ্টা কর

SELECT CONVERT(DECIMAL(10,2),YOURCOLUMN)

2
এটি যদি 10 বছর আগে উত্তর ছিল তবে এটি আর নেই। এই পদ্ধতিটি 10.11111 10.00 এ পরিণত হবে।
জোনাথন কাউলি-থম

আমি নির্বাচন রূপান্তর করুন চেষ্টা (দশমিক (10,2), 10,11111) এটি নির্বাচন রূপান্তর করুন জন্য 10.11 একই ফলাফল ফিরে (দশমিক (10,2), '10,11111') এটা SQL সার্ভার 2008 R2 ছিল
SKCS কামাল

70

Str()ফাংশন ব্যবহার করুন । এটি তিনটি আর্গুমেন্ট লাগে (সংখ্যাটি প্রদর্শন করতে মোট অক্ষরের সংখ্যা, এবং দশমিক স্থান প্রদর্শন করার জন্য)

  Select Str(12345.6789, 12, 3)

প্রদর্শন করে: '12345.679' (3 স্পেস, 5 ডিজিট 12345, একটি দশমিক পয়েন্ট এবং তিন দশমিক সংখ্যা (679) tr - এটি কেটে ফেলতে হবে যদি এটি গোল হয়, (যদি পূর্ণসংখ্যার অংশটি মোট আকারের জন্য খুব বড় না হয়, তবে এই ক্ষেত্রে তার পরিবর্তে তারকাচিহ্নগুলি প্রদর্শিত হয়))

দশমিক বিন্দুর ডানদিকে 3 দিয়ে মোট 12 টি অক্ষরের জন্য।


1
it rounds if it has to truncate... যদি না পূর্ণসংখ্যার অংশটি মোট আকারের জন্য খুব বড় না হয়, সেক্ষেত্রে তারের বদলে প্রদর্শিত হয়। এর জন্য ডকুমেন্টেশনেSTR এটি উল্লেখ করা হয়েছে । এই পৃষ্ঠাটি থেকে এখানে একটি উদ্ধৃতি দেওয়া আছে:STR(1223,2) truncates the result set to **.
মার্ক বাইয়ার্স

36

সাধারণত আপনি এসকিউএল-তে কোনও সংখ্যার যথার্থতাটিকে পরামিতিগুলি দিয়ে সংজ্ঞায়িত করতে পারেন। বেশিরভাগ ক্ষেত্রে এটি হবে NUMERIC(10,2)বা Decimal(10,2)- 2 (দশমিক স্থান) এর যথার্থতার সাথে 10 টি মোট অঙ্ক সহ একটি কলাম একটি সংখ্যার হিসাবে সংজ্ঞায়িত করবে।

স্বচ্ছতার জন্য সম্পাদিত


4
এটি ডেসিমাল (10, 2) হিসাবেও ঘোষণা করা যেতে পারে।
jrcs3

10
এটি বেশ কয়েকটি কারণে ভুল। এটি সংখ্যা নয়, এটি সংখ্যা বা দশমিক। আপনি বলছেন যে সংখ্যাসূচক (10,2) দশমিক পয়েন্টের আগে 10 টি স্থানের অনুমতি দেয়, এটিও ভুল। সংখ্যার (10,2) দশমিক বিন্দুর পরে 2 স্থান সহ 10 টি মোট অঙ্কের জন্য অনুমতি দেয়। পরিসীমা = -99999999.99 থেকে 99999999.99
জর্জ মাস্ত্রোস

@ জি মাস্ত্রোস: মনে হচ্ছে আপনি যথার্থ পয়েন্টে ঠিক আছেন। কনভেনশনটির প্রকৃত নামকরণের ক্ষেত্রে, অনেকগুলি এসকিউএল বাস্তবায়নে NUMBER একটি বৈধ প্রকার। যদিও আমি স্কেলসার্ভারের বিষয়টি না জানার বিষয়টি স্বীকার করব
এএএ

@ জিএমস্ট্রোস একই কথা বলতে এসেছিলেন। এমএসডিএন.মাইক্রোসফট.এইন.উস
জো

19

এটি আমার পক্ষে কাজ করে এবং সর্বদা দুটি অঙ্কের ভগ্নাংশ রাখে

23.1 ==> 23.10

25.569 ==> 25.56

1 ==> 1.00

Cast(CONVERT(DECIMAL(10,2),Value1) as nvarchar) AS Value2

কোড স্ক্রিনশট


2
উপরের চার্লস ব্রেটানা থেকে এসআরটি () ফাংশনটি ব্যবহার করে দেখুন। এটি আপনার সূত্রের মতো কাজ করে তবে এটি আপনার 25.569 উদাহরণে গোল করবে।
জেরিওল

15

বাচ্চারা আজ এইভাবে করছে:

DECLARE @test DECIMAL(18,6) = 123.456789
SELECT FORMAT(@test, '##.##')

123,46


1
ফরমেট ফাংশনটি ২০১২ সালের সংস্করণ থেকে পাওয়া যায়।
ব্যবহারকারী 1263981

বা: নির্বাচন করুন ফর্ম্যাট (@ সর্বশেষ, '# #')
জাভা-প্রেম

যদি ইনপুট ডেটা ছিল: DECLARE @test DECIMAL(18,6) = 0.456789 তারপর SELECT FORMAT(@test, '##.##')আয়: .46 কিভাবে আপনি এটি শূন্য দেখানোর জন্য পেতে পারি: 0.46?
লুইসদেব

একটি শীর্ষস্থানীয় 0 পেতে, নির্বাচন করুন ফর্ম্যাট (@ সর্বশেষ, '# 0। ##')
ক্লাববিটাইম

14

আপনার যদি কেবলমাত্র দুটি দশমিক স্থানের প্রয়োজন হয় তবে সরলতম উপায় ..

SELECT CAST(12 AS DECIMAL(16,2))

অথবা

SELECT CAST('12' AS DECIMAL(16,2))

আউটপুট

12.00

7

যদি আপনি সংখ্যাটি কেটে ফেলার পরিবর্তে গোল করে ভাল হন তবে এটি ঠিক:

ROUND(column_name,decimals)

2

এটা চেষ্টা কর:

 declare @MyFloatVal float;

    set @MyFloatVal=(select convert(decimal(10, 2), 10.254000))

    select  @MyFloatVal

    Convert(decimal(18,2),r.AdditionAmount) as AdditionAmount

0

আপনি যে মানটি সন্নিবেশ করতে চান তার গুণমান (উদাহরণস্বরূপ 2.99) 100 দ্বারা গুণ করুন

তারপরে ফলাফলটি 100 দ্বারা বিভাজনটি সন্নিবেশ করুন .01 শেষে:

299.01/100

0

দশমিকের পরে এটি 2 টি মান সহ মোট 10 ডিজিটের অনুমতি দেবে। এর অর্থ এটি দশমিকের আগে 8 অঙ্ক এবং দশমিক 2 পরে দশমিকের আগে মানের মানটি সংযোজন করতে পারে।

যাচাই করতে, নিম্নলিখিত কোয়েরিতে মানটি দিন।

DECLARE vtest  number(10,2);
BEGIN
SELECT 10.008 INTO vtest FROM dual;
dbms_output.put_line(vtest);
END;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.