2011-10-19 9 views
5

के रूप में मैं एक मेज Employee SQLite डेटाबेस में संग्रहीत किया जाता है है SQLite में guid का उपयोग करना। GUID प्रकार की किसकी प्राथमिक कुंजी "आईडी" है। मैं id साथ रिकॉर्ड = कोई भाग्य के साथ निम्न क्वेरी के साथ 'a8828ddf-ef22-4d36-935a-1c66ae86ebb3' guid खोजने की कोशिश:का चयन करें जहां GUID SQLite DB में बाइनरी

SELECT * FROM Employee 
WHERE Employee.Id = 'a8828ddf-ef22-4d36-935a-1c66ae86ebb3' 

किसी को भी मुझे बता सकते हैं कि कैसे मैं क्वेरी लिखना चाहिए?

धन्यवाद,

+0

आप कैसे जानते हैं कि सही आईडी है? तुम सिर्फ 'Employee' से * का चयन कर सकते हैं या आप' कर्मचारी जहां '% 8828%' '(कई रिकॉर्ड वापस आ सकते हैं) की तरह employee.id मान दिया –

+0

मैं जानता हूँ कि इस तरह के आईडी मौजूद के साथ एक पंक्ति है की जाँच करने के से चुन सकते हैं * वीएस में एसक्लाइट सर्वर एक्सप्लोरर में पूरी तालिका दिखाकर डेटाबेस में। – sean717

+0

शायद वीएस इसे अच्छी तरह से देखने के लिए कुछ बदल रहा है (जैसे हाइफ़न जोड़ना)। उनके बिना चयन करने का प्रयास करें। SQLite को अन्य UI का उपयोग करने का प्रयास करें। –

उत्तर

6

GUID शायद एक बाइनरी ब्लॉब के रूप में जमा किया जा रहा है; प्रयास करें:

SELECT * FROM Employee 
WHERE Employee.Id = X'a8828ddfef224d36935a1c66ae86ebb3'; 
+0

हां, मैंने पाया कि GUID वास्तव में बाइनरी के रूप में संग्रहीत है। लेकिन आपके द्वारा दिए गए वाक्यविन्यास अभी भी काम नहीं कर रहे हैं, धन्यवाद। – sean717

+0

आज़माएं: कर्मचारी सीमा 10 से हेक्स (आईडी) का चयन करें; –

+0

sean717। क्या आपने हल खोज लिया? – andySF

7

यह एक पुराने सवाल है, लेकिन खोजों के साथ आता है और जब तक चयनित जवाब सही है, यह हर किसी के लिए आसानी से काम न करे। उदाहरण के लिए जब SQLite को .NET बाइंडिंग का उपयोग करते हैं।

कारण यह है कि जब GUID प्रारूप में है a8828ddf-ef22-4d36-935a-1c66ae86ebb3 आप केवल डैश को हटा नहीं सकते हैं और इसे X'...' पर डाल सकते हैं। GUID कई हिस्सों में है और डेटाबेस बाइनरी को अलग-अलग संग्रहीत कर रहा है।

जब GUID a8828ddf-ef22-4d36-935a-1c66ae86ebb3 है तो यह X'df8d82a822ef364d5a93b3eb86ae661c' के रूप में छोटे एंडियन में संग्रहीत किया जाएगा। ध्यान दें कि सभी भागों को स्ट्रिंग के भीतर उलट दिया जाता है।

बेशक यदि आप X'a8828ddfef224d36935a1c66ae86ebb3' के रूप में डैश को हटाकर सीधे डेटा डालते हैं तो आप इसे भी पुनर्प्राप्त कर सकते हैं, लेकिन यदि आप रूपांतरण को संभालने के लिए .NET को देते हैं, तो GUID को छोटे एंडियन बाइट प्रस्तुतिकरण के रूप में संग्रहीत किया जाएगा।

(यह सभी छोटे endian वास्तुकला मान लिया गया है, बड़े endian पर परीक्षण नहीं किया)

संबंधित मुद्दे