2010-06-25 8 views
7

मैं सिर्फ ऐसा किया:जांच करें कि SQL सर्वर 2005 एक्सएमएल मैदान खाली है

Delete FROM MyTable WHERE ScopeValue = "" 
Delete FROM G_Scope WHERE ScopeValue is '' 
Delete FROM G_Scope WHERE ScopeValue = empty 
Delete FROM G_Scope WHERE ScopeValue is empty 

मैं एक्सएमएल क्षेत्र (नल नहीं) जहां ScopeValue कॉलम को खाली प्रविष्टियां हैं के साथ सभी पंक्तियां हटाना चाहते शून्य वर्ण का मतलब है।

कोई भी जानता है?

उत्तर

10

इस प्रयास करें:

DELETE FROM dbo.G_Scope WHERE ScopeValue IS NULL 

एसक्यूएल सर्वर स्तंभ हो सकता है अगर कोई मूल्य नहीं होता है NULL है।

अन्य संभावना यह होगी कि एक्सएमएल न्यूल नहीं है, लेकिन इसके मूल्य के रूप में एक खाली स्ट्रिंग है। इसके लिए, इस कमांड का उपयोग करें:

-- The DATALENGTH of an empty XML column is 5 
SELECT * FROM dbo.G_Scope WHERE DATALENGTH(ScopeValue) = 5 

क्या यह आपको उन पंक्तियों को दिखाता है जिनमें आप रुचि रखते हैं?

+0

यह अजीब है ..., या तो मैंने इसे पूरा करने से पहले किया था ... और ऐसा लगता है कि मेरे पास एक एसक्यूएल स्टूडियो प्रबंधन डिस्प्ले रीफ्रेश समस्या है। मैं बार-बार तालिका में चयन कर सकता हूं जो खाली फ़ील्ड के साथ स्कोपवेल्यू दिखा रहा है ... – msfanboy

+0

@msfanboy: दूसरे विकल्प के साथ मेरा जवाब अपडेट किया गया ... –

+14

@marc_s मुझे विश्वास है कि एक खाली एक्सएमएल var की प्रसवपूर्व 5 होगी : 'एक्स एक्सएमएल घोषित करें; सेट @ x = ''; डाइटलेंथ (@x) का चयन करें; कास्ट का चयन करें (@x varbinary (अधिकतम) के रूप में) ' –