নিম্নলিখিত দুটি বিবৃতি বিবেচনা করুন:
PRINT CONVERT(NUMERIC(38, 0), 0x0100000001, 0);
PRINT CONVERT(NUMERIC(38, 0), 0x0100010001, 0);
উভয় বিবৃতি ফিরে -1
; দ্বিতীয় বাইনারি মান প্রথম মানের তুলনায় দশমিক 65,536 উচ্চতর হ'ল এটি কি ভুল নয়?
নিঃশব্দ কাটার কারণে এটি কি হতে পারে না?
যদি আমি নিম্নলিখিত বিবৃতিগুলি চালিত করি:
PRINT CONVERT(NUMERIC(38, 0), 0x00000001, 0);
PRINT CONVERT(NUMERIC(38, 0), 0x00010001, 0);
আমি নিম্নলিখিত ত্রুটি সহ উপস্থাপিত করছি:
Msg 8114, Level 16, State 5, Line 1
Error converting data type varbinary to numeric.
এখানে কী হচ্ছে তা আমি কীভাবে নির্ণয় করতে পারি?
আমি এটি এসকিউএল সার্ভার 2012, v11.0.5058 এ চালাচ্ছি। ফলাফলগুলি এসকিউএল সার্ভার ২০০৮ আর 2 এসপি 2, এসকিউএল সার্ভার 2005 এবং এসকিউএল সার্ভার 2000 এ একই।
হারুন স্পট ইন। আপনার মস্তিষ্ক বাইনারি ডেটাটিকে পূর্ণসংখ্যার ডেটাতে সরাসরি সংখ্যায় রূপান্তরিত করছে, তবে এসকিউএল সার্ভার বাইনারি -> পূর্ণসংখ্যা -> সংখ্যাসূচক (x, y) থেকে এই অন্তর্নিহিত রূপান্তরটি করে না। SQL সার্ভার আপনার চিন্তার প্রক্রিয়া অনুসরণ করার জন্য, আপনি ভালো কিছু করতে হবে চাই:
—
টমাস স্ট্রিংগার
PRINT CONVERT(NUMERIC(38, 0), convert(int, 0x00000001), 0); PRINT CONVERT(NUMERIC(38, 0), convert(int, 0x00010001), 0);
।
প্রথম বাইটটি স্কেল (0x01 = 1), দ্বিতীয় বাইট যথার্থতা (0x00 = 0), চূড়ান্ত বাইট মান (0x01 = 1)। তিন এবং চারটি বাইট কীসের জন্য তা নিশ্চিত নয়। সাইনটি সেখানে আছে তবে এর জন্য দুটি বাইটের দরকার নেই। অবশ্যই এই বিটটি উল্টানো কোনও কিছুরই প্রভাবিত হয়েছে বলে মনে হয় না।
—
মার্টিন স্মিথ
ধন্যবাদ, @ মার্টিনস্মিথ - পৃথিবীতে আপনি কীভাবে নির্ধারণ করলেন যে প্রথম দুটি বাইটটি এরকমভাবে ব্যবহৃত হয়? তা কি নথিভুক্ত?
—
ম্যাক্স ভার্নন
@ অ্যারোনবার্ট্র্যান্ড: আপনি কি এই উত্তরটি দিতে চান? আমরা এটিকে "অনুत्तरযুক্ত" তালিকা থেকে চিহ্নিত করতে পারি।
—
সমস্ত ট্রেডের জোন
SELECT CONVERT(VARBINARY(32), 1), CONVERT(VARBINARY(32), 1.0);