2012-03-31 22 views
16

मैं एक दूसरे कॉलम में अल्पविराम से परे स्ट्रिंग विभाजित करने की आवश्यकता मैं निम्न तालिका है:स्प्लिट अल्पविराम से परे स्ट्रिंग -> फंक्शन db.CHARINDEX मौजूद नहीं है

CL1  POS     POS2  LENGHT  ALLELE 
1  3015108,3015109    5   A 
2  3015110,3015200    10   B 
3  3015200,3015300    15   C 
4  3015450,3015500    20   D 
5  3015600,3015700    15   E 

मैं के बाद संख्या विभाजित करना चाहते हैं एक दूसरे स्तंभ POS2 में अल्पविराम तो इसे पसंद करना चाहिए कि

CL1  POS     POS2  LENGHT  ALLELE 
1  3015108    3015109 5   A 
2  3015110    3015200 10   B 
3  3015200    3015300 15   C 
4  3015450    3015500 20   D 
5  3015600    3015700 15   E 

तो मैं पूछे गए निम्नलिखित:

INSERT INTO MyTable (POS2) 
SELECT RIGHT(POS, CHARINDEX(',', POS) + 1) FROM MyTable ; 


It returns an error : 
ERROR 1305 (42000): FUNCTION test.CHARINDEX does not exist 

उत्तर

27

MySQL में अंतर्निहित CHARINDEX() फ़ंक्शन नहीं है। LOCATE() MySQL समकक्ष होगा।

SUBSTRING_INDEX() का उपयोग करके ऐसा करने का एक और संक्षिप्त तरीका हो सकता है। कुछ इस तरह (अस्वीकरण: अपरीक्षित):

POS2


एक के रूप में एक तरफ के लिए पीओएस

SUBSTRING_INDEX(POS, ',', -1) के लिए SUBSTRING_INDEX(POS, ',', 1), मैं तुम्हें क्या हासिल करने की कोशिश कर रहे हैं गलतफहमी हो सकती है, लेकिन यह की तरह लग रहा आप UPDATE मौजूदा पंक्तियों को देखना चाहते हैं, INSERT नए नहीं? की तरह कुछ:

UPDATE MyTable SET POS2 = SUBSTRING_INDEX(POS, ',', -1); 
UPDATE MyTable SET POS = SUBSTRING_INDEX(POS, ',', 1); 
+0

वाह अद्भुत धन्यवाद! – madkitty

3

MySQL एक समान कार्य है: InStr या एक ही वाक्य रचना के लिए पता लगाएँ।