2013-06-28 9 views
251

का अद्यतन और प्रतिस्थापन भाग मुझे दो कॉलम, ID और Value के साथ एक तालिका मिली है। मैं दूसरे कॉलम में कुछ तारों का एक हिस्सा बदलना चाहता हूं। टेबल केएक स्ट्रिंग

उदाहरण:

ID   Value 
--------------------------------- 
1    c:\temp\123\abc\111 
2    c:\temp\123\abc\222 
3    c:\temp\123\abc\333 
4    c:\temp\123\abc\444 

अब Value स्ट्रिंग में 123\ जरूरत नहीं है। मैं UPDATE और REPLACE की कोशिश की:

UPDATE dbo.xxx 
SET Value = REPLACE(Value, '%123%', '') 
WHERE ID <= 4 

जब मैं निष्पादित स्क्रिप्ट एसक्यूएल सर्वर एक त्रुटि रिपोर्ट नहीं करता है, लेकिन यह या तो कुछ भी अपडेट नहीं होता। ऐसा क्यों है?

UPDATE dbo.xxx 
SET Value = REPLACE(Value, '123', '') 
WHERE ID <=4 
+4

यह कुछ भी क्योंकि वाइल्डकार्ड वाइल्डकार्ड के रूप में बल्कि शाब्दिक रूप में व्यवहार नहीं कर रहे हैं को प्रतिस्थापित नहीं करता। – stuhpa

उत्तर

422

नीचे के रूप में % वर्ण को दूर करने के

+1

यह grate काम करता है, लेकिन ntext प्रकार के साथ नहीं :(... >> संदेश 8116, स्तर 16, राज्य 1, रेखा 21 - तर्क डेटा प्रकार ntext प्रतिस्थापन समारोह के तर्क 1 के लिए अमान्य है। – Owidat

+6

मुझे बस समाधान मिला :) ===> http://stackoverflow.com/questions/4341613/alternatives-to-replace-on-a-text-or-ntext-datatype – Owidat

+1

रुको, '\' के साथ क्या है?क्या यह 'चरित्र' से बच नहीं रहा है और यह गलत बना रहा है? – Meekohi

37

प्रयास करते समय आपको REPLACE में वाइल्डकार्ड जरूरत नहीं है - यह सिर्फ स्ट्रिंग आप दूसरा तर्क के लिए प्रवेश पाता है, तो निम्न कार्य करना चाहिए:

UPDATE dbo.xxx 
SET Value = REPLACE(Value, '123\', '') 
WHERE ID <=4 

(मैं भी में \ जोड़ा के रूप में मुझे लगता है कि आप की जरूरत नहीं है कि या तो की जगह)

25

Quer बनाने के

UPDATE dbo.xxx 
SET Value = REPLACE(Value, '123', '') 
WHERE ID <= 4 
AND Value LIKE '%123%' 
6

आप एक मेज है आप तारीख कोड है जो सात चरित्र है जहां: y रन बड़ा तालिकाओं में तेजी से जहां नहीं हर पंक्ति को अपडेट करना होगा, आप भी केवल अद्यतन पंक्तियों को संशोधित किया जाएगा करने के लिए चुन सकते हैं जैसे

"32-1000" 

कुछ अब आप

के साथ सभी

"32-" 

बदलना चाहते हैं

"14-" 

SQL क्वेरी आप चलाने के लिए है

Update Products Set Code = replace(Code, '32-', '14-') Where ...(Put your where statement in here) 
0
CREATE TABLE tbl_PersonalDetail 
(ID INT IDENTITY ,[Date] nvarchar(20), Name nvarchar(20), GenderID int); 

INSERT INTO Tbl_PersonalDetail VALUES(N'18-4-2015', N'Monay', 2), 
            (N'31-3-2015', N'Monay', 2), 
            (N'28-12-2015', N'Monay', 2), 
            (N'19-4-2015', N'Monay', 2) 

DECLARE @Date Nvarchar(200) 

SET @Date = (SELECT [Date] FROM Tbl_PersonalDetail WHERE ID = 2) 

Update Tbl_PersonalDetail SET [Date] = (REPLACE(@Date , '-','/')) WHERE ID = 2 
+1

कृपया बताएं कि आपका उत्तर समस्या का समाधान कैसे करता है, इससे सभी स्पष्टता और भविष्य के संदर्भ के लिए आपके समाधान को समझने में मदद मिलेगी। – Aziz

1

है कि आप नीचे अद्यतन क्वेरी

UPDATE dbo.xxx SET Value=REPLACE(Value,'123\','') WHERE Id IN(1, 2, 3, 4) 

UPDATE dbo.xxx SET Value=REPLACE(Value,'123\','') WHERE Id <= 4 

ऊपर प्रश्नों के किसी भी काम करना चाहिए का उपयोग करना चाहिए।

0

कोई भी आपकी स्क्रिप्ट को प्रतिस्थापित करना चाहता है।

> update dbo.[TABLE_NAME] set COLUMN_NAME= replace(COLUMN_NAME, 'old_value', 'new_value') where COLUMN_NAME like %CONDITION% 
+3

** समीक्षा कतार से **: क्या मैं आपसे अनुरोध कर सकता हूं कि कृपया अपने स्रोत-कोड के आस-पास कुछ संदर्भ जोड़ें। कोड-केवल उत्तरों को समझना मुश्किल होता है। यदि आप अपनी पोस्ट में अधिक जानकारी जोड़ सकते हैं तो यह पूछने वाले और भावी पाठकों दोनों की मदद करेगा। – RBT

-1

क्वेरी:

UPDATE tablename 
SET field_name = REPLACE(field_name , 'oldstring', 'newstring') 
WHERE field_name LIKE ('oldstring%');