2012-04-30 15 views
9

मैं कुछ डेटा है कि इस तरह दिखता है:MySQL सभी क्षेत्रों के पहले दो वर्ण निकाल दें

C:10 
R:200 
N/A 
E:3 
N/A 
N:77 

मैं प्रत्येक पंक्ति के लिए पहले दो वर्णों को हटा दें, और N/A साथ पंक्तियों को छोड़ कोशिश कर रहा हूँ मैंने SUBSTRING के साथ ऐसा करने का तरीका जानने का प्रयास कर रहा है लेकिन इसमें कोई भाग्य नहीं है।

UPDATE d1 
SET d1_val = SUBSTRING(d1_val, 1, LENGTH(d1_val)2) 
+2

। – kapa

उत्तर

19

LIKE '_:%' उपयोग कर रहा है

UPDATE d1 
SET d1_val = SUBSTRING(d1_val, 3) 
WHERE d1_val <> 'N/A' 
4

कई कार्यान्वित के बारे में अधिक सुरक्षित क्वेरी का प्रयास करें:

UPDATE d1 
SET d1_val = SUBSTRING(d1_val, 3) 
WHERE d1_val LIKE '_:%' 

यह हर लाइन जो C:10 तरह लग रहा है बदल जाएगा, E:100 आदि नहीं बल्कि 10, 100 एक पिछली क्वेरी चलाने के बाद।

(यह मानते हुए वहाँ हमेशा : से पहले एक पत्र है, तो अधिक -। LIKE '%:%' का उपयोग करें)

इसके बजाय `N/A`, आप अपने डेटाबेस में` NULL` (एक नहीं स्ट्रिंग, असली नल) का उपयोग करना चाहिए की
संबंधित मुद्दे