2011-02-28 23 views
5

मैं माईएसक्यूएल में एक वर्चर फ़ील्ड में सभी गैर-संख्यात्मक पात्रों को प्रतिस्थापित करना चाहता हूं, क्योंकि एक फोन टेबल है और उन्हें आयात करते समय मुझे कई "फैक्स: xxx" या "-" वर्ण मिलते हैं जो वहां नहीं होना चाहिए।MySQL में गैर-संख्यात्मक वर्णों को कैसे प्रतिस्थापित करें?

मैं एक समाधान है कि कई जगह नहीं शामिल करना चाहते() कहता है,

उत्तर

5

यह एक mysql समारोह है:

delimiter // 

create function IF NOT EXISTS LeaveNumber(str varchar(50)) returns varchar(50) 
no sql 
begin 
declare verification varchar(50); 
declare result varchar(50) default ''; 
declare character varchar(2); 
declare i integer default 1; 

if char_length(str) > 0 then 
    while(i <= char_length(str)) do 
     set character = substring(str,i,1); 
     set verification = find_in_set(character,'1,2,3,4,5,6,7,8,9,0'); 

     if verification > 0 then 
      set result = concat(result,character); 
     end if; 

     set i = i + 1; 

    end while; 

return result; 
else 
return ''; 
end if; 
end // 


delimiter ; 

select leaveNumber('fAX:-12abcDE234'); -- RESULT: 12234 

अपने अद्यतन क्वेरी में एक देशी mysql समारोह के रूप में यह प्रयोग करें।

+0

ग्रेट वर्क निक;) आपने मेरा दिन बचाया :) –

+0

खुशी हुई कि मेरे फ़ंक्शन ने आपकी मदद की। उन्नयन के लिए धन्यवाद। ;) –

+0

केवल पोर्तुगीज (?) परिवर्तनीय नाम बहुत भ्रमित हैं, यह समझने की कोशिश करते समय कि यह कैसे किया जाता है: डी –

1

आपका सबसे अच्छा शर्त एक regex यूडीएफ की जगह उपयोग करने के लिए हो सकता है पहले से

धन्यवाद। मैं आपको this one पर एक नज़र डालने की सलाह दूंगा, जिसमें एक REGEX_REPLACE फ़ंक्शन है जो शायद आपकी आवश्यकताओं के अनुरूप होगा।

आपका regex शायद सिर्फ इस तरह दिखेगा:

[^0-9] 
+0

आपके द्वारा प्रदान किया गया लिंक टूटा हुआ है :( –

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