अद्यतन और एक स्ट्रिंग का हिस्सा


427

मुझे दो कॉलम के साथ एक तालिका मिली है, 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

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

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

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


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

जवाबों:


700

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

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

(मैंने \प्रतिस्थापित में भी जोड़ा क्योंकि मुझे लगता है कि आपको इसकी आवश्यकता नहीं है)


1
यह grate का काम करता है, लेकिन ntext प्रकार के साथ नहीं :( ... >> Msg 8116, Level 16, State 1, Line 21 - Argument data type ntext,
बदले हुए

6
मैंने अभी हल ढूंढा है :) ===> stackoverflow.com/questions/4341613/…
Owidat

2
रुको, `? isn't that escaping the '`चरित्र के साथ क्या है और यह गलत कर रहा है?
मियोकी


यदि आपका कॉलम टाइप टेक्स्ट या NText है तो यह काम नहीं करेगा, इस उत्तर को देखें stackoverflow.com/questions/4341613/…
Adil H. Raza

55

%नीचे दिए गए वर्णों को निकालने का प्रयास करें

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

40

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

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


8

आपके पास एक तालिका है जहाँ आपके पास दिनांक कोड है जो सात वर्ण जैसा है

"32-1000"

अब आप सभी को बदलना चाहते हैं

"32-"

साथ में

"14-"

आपको जिस SQL ​​क्वेरी को चलाना है वह है

Update Products Set Code = replace(Code, '32-', '14-') Where ...(Put your where statement in here)

3

किसी के लिए भी अपनी स्क्रिप्ट को बदलना चाहते हैं।

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


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

1
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
कृपया बताएं कि आपका उत्तर समस्या को कैसे हल करता है, यह सभी को आपके समाधान को अधिक स्पष्टता के साथ और भविष्य के संदर्भ के लिए समझने में मदद करेगा।
अज़ीज़

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.TblNews
SET keyWords = REPLACE(keyWords, '-', N'،')

मदद: dbo.TblNews - तालिका का नाम

की-वर्ड्स - फ़िल्ड नाम

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.