2012-06-25 20 views
7

से निर्दिष्ट शब्दों को हटाएं मैं तालिका में एक विवरण फ़ील्ड से कुछ तारों को खत्म करने की कोशिश कर रहा हूं। यह अंत करने के मैं इस समारोहटी-एसक्यूएल का प्रयोग स्ट्रिंग


CREATE FUNCTION fnDescriptionClean 
(@strDescription varchar(50)) 
RETURNS varchar(50) 
AS 
BEGIN 

declare @Return varchar(50) 
declare @badword varchar(50) 

set @badword = 'Front' 
set @strDescription = CASE 

--Remove from mid string 

WHEN @strDescription LIKE '% ' + @Badword +' %' THEN REPLACE(@strDescription,' ' + @Badword + ' ',' ') 

--Remove from start of string 

WHEN @strDescription LIKE @Badword +' %' THEN RIGHT(@strDescription, (len(@strDescription)-(len(@Badword)+1))) 

--Remove from end of string 

WHEN @strDescription LIKE '% ' + @Badword THEN LEFT(@strDescription, (len(@strDescription)-(len(@Badword)+1))) 
ELSE @strDescription END 

set @badword = 'Right' 
set @strDescription = CASE 

WHEN @strDescription LIKE '% ' + @Badword +' %' THEN REPLACE(@strDescription,' ' + @Badword + ' ',' ') 
WHEN @strDescription LIKE @Badword +' %' THEN RIGHT(@strDescription, (len(@strDescription)-(len(@Badword)+1))) 
WHEN @strDescription LIKE '% ' + @Badword THEN LEFT(@strDescription, (len(@strDescription)-(len(@Badword)+1))) 
ELSE @strDescription END 

RETURN  @strDescription 
end 

मैं एसक्यूएल प्रोग्रामिंग करने के लिए नया हूँ और इस पर सुधार करने के लिए चाहते हैं बना दिया है। मान लीजिए कि मैं एक टेबल रखना चाहता था जिसमें 'खराब शब्द' की एक सूची शामिल थी जिसे मैं स्ट्रिंग और लूप से हटा देना चाहता था, विवरण की सफाई करते समय।

मुझे यह इंगित करना चाहिए कि इस प्रक्रिया को जितना संभव हो उतना कुशल होना चाहिए क्योंकि मैं 15 लाख रिकॉर्ड से निपट रहा हूं।

+2

एसक्यूएल सर्वर में 'प्रतिस्थापन' फ़ंक्शन है जिसका मैं इसका उपयोग करने का सुझाव दूंगा और '' के साथ प्रतिस्थापित करूंगा। यहां एक [एमएसएफटी लिंक] है (http://msdn.microsoft.com/en-us/library/ms186862.aspx) यदि आप प्रदर्शन के बारे में चिंतित हैं तो आप नियमित अभिव्यक्तियों को देख सकते हैं जो कि तेज़ी से संचालित होने लगते हैं। – xQbert

+0

मुझे चिंतित है कि वेनिला प्रतिस्थापन समारोह का उपयोग करके मुझे एक शब्द के कुछ हिस्सों को हटा दिया जाएगा जिससे मुझे स्ट्रिंग का एक कष्टप्रद बिट छोड़ दिया जा सके। जैसे कि मैं "रन" को प्रतिस्थापित करता हूं और इसे "रनिंग" मिल जाता है, मुझे "निंग" के साथ छोड़ा जाएगा। मैं नियमित रूप से अभिव्यक्तियों का उपयोग करना शुरू करना चाहता हूं लेकिन मुझे समझ में आता है कि आपको डेटाबेस पर विभिन्न निजीकरण और कंप्यूटर पर अतिरिक्त सॉफ़्टवेयर (विजुअल स्टूडियो?) स्थापित करने की आवश्यकता है - इस समय यह एक विकल्प नहीं है। – user1075081

+1

मैं चिंता को समझता हूं और सराहना करता हूं। हालांकि यह एक समस्या है जिसे आप पूरी तरह से नहीं बचा सकते हैं। इस मुद्दे को कम करने के लिए एकमात्र तरीका हर प्रविष्टि का दृश्य निरीक्षण है; एक अनुमोदन प्रक्रिया के साथ। अपनी तकनीक के साथ भी आप वाक्य के अंत में इसके साथ समस्याओं में भाग लेंगे। बुरा शब्द। – xQbert

उत्तर

18

आप REPLACE का उपयोग क्यों नहीं करते?

UPDATE tableName 
SET columnName = REPLACE(columnName,'specific word',''); 
+0

यदि आप आंशिक शब्दों की जांच करना चाहते हैं तो आप इसे अग्रणी और पिछली जगहों के साथ भी पैड कर सकते हैं। –

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