2011-04-23 4 views
9

के साथ खंड है, मेरे पास varbinary(max) कॉलम (यानी Data VarBinary(max)create table कमांड में एक SQL सर्वर डेटाबेस तालिका है)।एसक्यूएल जहां बाइनरी

क्या बाइनरी डेटा के भीतर किसी प्रकार के पैटर्न मिलान के साथ where खंड करना संभव है?

उदाहरण के लिए, सी # .NET SqlCommand ऑब्जेक्ट का उपयोग करके, मैंने पाया कि मैं select * from TableName where Data = 0x4638763849838709 go जैसी क्वेरी कर सकता हूं, जहां मान पूर्ण डेटा कॉलम मान है। लेकिन मैं डेटा के कुछ हिस्सों जैसे पैटर्न select * from TableName where Data = 0x%3876% go से मिलान करने में सक्षम होना चाहता हूं।

धन्यवाद।

+0

बाइनरी डेटा एक विशेष दस्तावेज़/फ़ाइल प्रकार का प्रतिनिधित्व है में दे दिया है के लिए? –

उत्तर

3

SQL सर्वर VARBINARY फ़ील्ड के माध्यम से खोजने के लिए कोई फ़ंक्शन प्रदान नहीं करता है, इसलिए यह संभव नहीं है।

this संबंधित SO प्रश्न और उत्तर देखें।

अनिवार्य रूप से, आपको बाइनरी जानकारी निकालने और उस टूल का उपयोग करने की आवश्यकता होगी जो उस प्रारूप को समझता है जो इसे खोजने के लिए है। यह सीधे SQL सर्वर में नहीं किया जा सकता है।

0

यहां अंधेरे में एक शॉट लेना, लेकिन आप पहले फ़ील्ड को VARCHAR (MAX) में परिवर्तित कर सकते हैं, फिर एक LIKE कथन का उपयोग करके तुलना कर सकते हैं।

उदा।

SELECT * 
FROM TableName 
WHERE CONVERT(VARCHAR(MAX), Data) LIKE '%2345%' 
7

उदाहरण आप सवाल

WITH t(c) AS 
(
SELECT CAST(0x4638763849838709 AS VARBINARY(MAX)) 
) 
SELECT * 
FROM t 
WHERE CHARINDEX(0x3876,c) > 0 

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

  • कोई संबंधित समस्या नहीं^_^