2013-06-21 7 views
5

मेरी 'स्थान' तालिका में 6 कॉलम हैं। (ID, नाम, उपनाम, क्षेत्र, एक्स, वाई) 'का नाम' कॉलम से कुछ प्रविष्टियों कीMySQL - एक प्रविष्टि से सबस्ट्रिंग निकालें

उदाहरण:

Blackwood Highschool, Paris, France 

Hilltop Market, Barcelona, Spain 

Roundwell Plaza, Melbourne, Australia 

Rurk Mount, Moscow, Russia(mountain) 

History Museum, Prague, Czech Republic 

Narrow River (river), Bombay, India 

कुछ प्रविष्टियों में शामिल हैं "(पर्वत)", "(नदी)" या "(...)" नाम के भीतर (8 अलग-अलग)। मुझे नहीं पता कि टेबल इस तरह क्यों बनाया गया था। इस डेटा के लिए यह एक अतिरिक्त कॉलम होना चाहिए था, लेकिन अच्छी तरह से।

मैं स्थान नाम से केवल "(...)" सबस्ट्रिंग को हटाना चाहता हूं। मैं तो तुम एक विचार प्राप्त कैसे करना है पता नहीं, यह कुछ इस तरह है:

DELETE FROM 'Location' 
WHERE 'Name' 
LIKE '%(%)%'; 

मैं जानता हूँ कि इस पूरे पंक्ति को हटा सकता है, लेकिन मैं अभी से (%) अवधि निकालना चाहते हैं ' नाम 'स्ट्रिंग।

UPDATE Location 
SET Name = LEFT(Name,LOCATE('(',Name)-1) 
WHERE LOCATE('(',Name) > 0 

सिंटेक्स बंद है थोड़ा मुझे लगता है कि:

उत्तर

18

यदि आपके पास केवल 8 भिन्नताएं हैं, और यह एक बार बात है, तो आप इसे प्रतिस्थापित कर सकते हैं।

update location 
    set name = replace(name , '(river)','') 
    where name like '%(river)%'; 
+0

बिल्कुल, यह सिर्फ एक बार बात है। यह 8 भिन्नताओं के लिए पूरी तरह से काम किया। – Mazka

0
हटाने की बजाय

, अद्यतन, की तरह कुछ है। एक update बयान में

select concat(left(name, instr(name, '(') - 1), 
       right(name, length(name) - instr(val, ')')) 
      ) 

असल में, आप यह चाहता हूँ:

2

आप जानवर बल स्ट्रिंग आपरेशन साथ ऐसा कर सकते

update location 
    set name = concat(left(name, instr(name, '(') - 1), 
         right(name, length(name) - instr(val, ')')) 
        ) 
    where name like '%(%)%'; 

आप नहीं चाहते delete, क्योंकि है कि पूरे हटाता करना पंक्तियों।

0

मैं तुम्हारे लिए इस उदाहरण बनाया:

set @name = "Rurk Mount, Moscow, Russia(mountain)"; 

set @fir = locate("(",@name); 
set @las = locate(")",@name); 

set @lef = left(@name,@fir-1); 

set @word = substr(@name,@fir+1,@[email protected]); 

select @fir,@las,@lef,@word,concat(@lef,' ',@word); 

इस तरह से आप अपने कार्य को पूरा करने के लिए एक रास्ता देख सकते हैं।

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