سؤال

لقد قمت بإنشاء قاعدة بيانات SQL باستخدام Java ، أنا noob عندما يتعلق الأمر بـ SQL ولكن تم تكوينها وإعدادها ، لدي جدول تم إنشاؤه يحتوي على عمودين ، الأول هو عدد صحيح كبير يمارس الزيادات ، والثانية التي جربتها تحديد ذلك على أنه char و varchar و binary ، لكنني ما زلت لا أحصل على الوظيفة المطلوبة ، قل أنني أحاول تخزين رقم hex 0a في عمود char أحصل على خطأ ، لقد قمت بإلحاق 0x بالبداية A التي يبدو أنها تخزنها ، ولكن متى أقوم بطباعة المحتويات الفارغة أو في بعض الحالات أحصل على أحرف مثل "/" أو "؟" ، حاولت أيضًا استخدام SQL Explorer ويعطيني نفس النتيجة لعرض الجدول ،

مشكلتي هي أنني بحاجة إلى تخزين سلسلة سداسي عشرة من أحرف مثل EB8D4EE6.

هل يمكن لأحد أن ينصحني بكيفية القيام بذلك؟

هل كانت مفيدة؟

المحلول

إليك منشورًا رائعًا للمدونة ، أشير دائمًا إلى تذكر نفسي بالتعامل المناسب مع قيم Hex والحقول الثنائية ، وأضع بعض الآثار المترتبة على الأداء.

http://www.xaprb.com/blog/2009/02/12/5-ways-to-make-hexadecimal-identifiers-perform-better-on-mysql/

نصائح أخرى

نرى http://dev.mysql.com/doc/refman/5.5/en/hexadecimal-literals.html

يدعم MySQL القيم السداسية ، المكتوبة باستخدام شكل X'Val ، أو X'Val "، أو 0xval ، حيث يحتوي VAL على أرقام سداسية (0..9 ، A..F). أحرف الأرقام لا يهم. بالنسبة للقيم المكتوبة باستخدام تنسيق X'Val 'أو X'Val ، يجب أن تحتوي VAL على عدد زوجي من الأرقام. بالنسبة للقيم المكتوبة باستخدام بناء جملة 0xVal ، يتم التعامل مع القيم التي تحتوي على عدد فردي من الأرقام على أنها ذات رائدة إضافية 0. على سبيل المثال ، يتم تفسير 0x0a و 0xaaa على أنها 0x0a و 0x0aaa.

في السياقات الرقمية ، تعمل القيم السداسية السداسية مثل الأعداد الصحيحة (دقة 64 بت). في سياقات السلسلة ، يتصرفون مثل السلاسل الثنائية ، حيث يتم تحويل كل زوج من أرقام السداسي إلى حرف:

ربما يجب عليك تخزين رقم السداسي في عمود عدد صحيح. يمكنك بعد ذلك تحويل مرة أخرى إلى Hex عند اختيار استخدام HEX() وظيفة.

على سبيل المثال ،

INSERT INTO MyTable (`MyIntegerColumn`) VALUES (0xeb8d4ee6);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top