these user-defined REGEXP_REPLACE()
functions उपयोग करके, आप एक खाली स्ट्रिंग से बदलने के लिए सक्षम हो सकता है:
UPDATE children SET wishes = REGEXP_REPLACE(wishes, '(,(\s)?)?Surfboard', '') WHERE caseNum='whatever';
दुर्भाग्य से, तुम सिर्फ सादे पुराने REPLACE()
उपयोग नहीं कर सकते क्योंकि आप जहां स्ट्रिंग में 'सर्फबोर्ड' प्रतीत होता है पता नहीं है। वास्तव में, अगर 'सर्फबोर्ड' शुरुआत या अंत में होता है तो उपरोक्त रेगेक्स को शायद अतिरिक्त ट्वीकिंग की आवश्यकता होगी।
शायद आप बंद ट्रिम कर सकता है प्रमुख और अल्पविराम के इस तरह बचे अनुगामी:
UPDATE children SET wishes = TRIM(BOTH ',' FROM REGEXP_REPLACE(wishes, '(,(\s)?)?Surfboard', '')) WHERE caseNum='whatever';
तो क्या यहाँ हो रहा है? रेगेक्स 'सर्फबोर्ड' और इससे पहले एक वैकल्पिक कॉमा & स्थान हटा देता है। फिर आसपास के TRIM()
फ़ंक्शन स्ट्रिंग की शुरुआत में 'सर्फबोर्ड' होने पर संभावित संभावित अल्पविराम को समाप्त करता है। शायद इसे रेगेक्स द्वारा भी संभाला जा सकता है, लेकिन स्पष्ट रूप से, मैं इसे समझने के लिए बहुत थक गया हूं।
नोट, मैंने कभी इनका उपयोग नहीं किया है और उनकी प्रभावशीलता या मजबूती के लिए झुकाव नहीं कर सकता, लेकिन यह शुरू करने का एक स्थान है। और, जैसा कि अन्य टिप्पणियों में उल्लेख कर रहे हैं, आपको वास्तव में अल्पविराम से अलग स्ट्रिंग के बजाए सामान्यीकृत इच्छा सूची तालिका में होना चाहिए। बिल्ट-इन REPLACE()
और फिर अतिरिक्त अल्पविराम जहां एक पंक्ति में दो अल्पविराम का मिल सकता है बाहर की सफाई
अद्यतन
इस अधिक के बारे में सोच, मैं और अधिक बस के उपयोग के लिए मजबूर कर रहा करने के लिए आंशिक हूँ। यह दो कॉमा पक्ष की तरफ देख रहा है, हालांकि आपकी मूल सूची वस्तुओं को अलग करने की कोई जगह नहीं थी। यदि वस्तुओं को अल्पविराम और रिक्त स्थान से अलग किया गया था, तो बाहरी REPLACE()
कॉल में ',,'
', ,'
को बदलें।
UPDATE children SET wishes = TRIM(BOTH ',' FROM REPLACE(REPLACE(wishes, 'Surfboard', ''), ',,', ',')) WHERE caseNum='whatever';
मुझे लगता है कि इच्छाओं को अपने आप मेज और कुंजी caseNumber साझा करते हुए यहाँ वापस जुड़ा हुआ होना चाहिए। –
1 स्ट्रिंग कॉन्सटेनेशन गायब होने लगता है लेकिन एक बार जब इसे हल किया जाता है तो आप इस क्वेरी को एसक्यूएल इंजेक्शन के लिए खोल रहे हैं - एक हैकर वास्तव में वह चाहता है जो उन्होंने चाहते थे। – Andrew
@ डैरेन - वास्तव में सही जवाब है, डीबी मॉडल गलत है और इसे ठीक करने की आवश्यकता है। टिप्पणियों पर दयालु उपरांत – Andrew