2015-01-16 9 views
13

मुझे यह त्रुटि मेरी क्वेरी से क्यों प्राप्त होती है?अद्यतन त्रुटि: "तर्क डेटा प्रकार टेक्स्ट REPLACE के तर्क 1 के लिए अमान्य है"

Msg 8116, Level 16, State 1, Line 3
Argument data type text is invalid for argument 1 of replace function.

क्वेरी:

UPDATE 
    tableName 
SET 
    fieldName = REPLACE (fieldName, '&lt;', '<') 
WHERE 
    id = 100 
+6

'ntext',' text', और 'image' डेटा प्रकार एसक्यूएल सर्वर के भविष्य के संस्करण में हटा दिया जाएगा। नए विकास कार्यों में इन डेटा प्रकारों का उपयोग करने से बचें, और उन अनुप्रयोगों को संशोधित करने की योजना बनाएं जो वर्तमान में उनका उपयोग करते हैं। 'Nvarchar (अधिकतम) ',' वर्कर (अधिकतम)', और 'varbinary (अधिकतम) 'का उपयोग करें। [यहां विवरण देखें] (http://msdn.microsoft.com/en-us/library/ms187993.aspx)। 'टेक्स्ट' वास्तव में बहुत खराब डेटाटाइप है - ऐसी कई चीजें हैं जिन्हें आप ** ** नहीं कर सकते हैं (आप सभी स्ट्रिंग फ़ंक्शंस का उपयोग नहीं कर सकते हैं) - इसका उपयोग करना बंद करें - अभी! –

उत्तर

22

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

UPDATE tableName 
SET fieldName = REPLACE (CONVERT(VARCHAR(MAX), fieldName), '&lt;', '<') 
WHERE id = 100 
+0

दोनों उत्तर समस्या को ठीक करते हैं लेकिन वे कारण का उल्लेख नहीं करते हैं (मार्क की टिप्पणी देखें)। इसके अलावा, त्रुटि संदेश स्वयं कारण बताता है। –

+0

वाह! धन्यवाद। यह काम करता हैं! – MufasaTheGreatAndPowerfull2

1

इस के लिए काम करेंगे आप

UPDATE yourTableName 
SET 
fieldName = REPLACE (CONVERT(VARCHAR(MAX), fieldName), '&lt;', '<') 
WHERE id = 100 
0

आप पाठ से भी बड़ा के लिए एक ही आपरेशन बनाना चाहते हैं 8000 वर्ण आप नीचे दिए गए कोड का उपयोग कर सकते हैं:

DECLARE @v VARCHAR(10) -- TEXT TO ADD 
DECLARE @Vs VARHCAR(10) -- TEXT TO FIND 
SET @v = 'String text to add' 
SET @Vs = 'String text to find' 


     UPDATE 
       yourTableName 
     SET 
       textField = SUBSTRING(textField,1,DATALENGTH (textField)-LEN(@Vs)) + REPLACE(CAST(SUBSTRING(textField,DATALENGTH(textField)-LEN(@Vs)-1,DATALENGTH (textField)) AS VARCHAR(4)),@Vs,@v) 
      WHERE 
       yourTableName.id = @iRifID -- Update for Table ID 
संबंधित मुद्दे