MySQL की टेक्स्ट हैंडलिंग क्षमताएं आप जो चाहते हैं उसके लिए पर्याप्त नहीं हैं। एक संग्रहीत कार्य एक विकल्प है, लेकिन शायद धीमा होगा। MySQL के भीतर डेटा को संसाधित करने के लिए आपकी सबसे अच्छी शर्त एक जोड़ना है। उपयोगकर्ता परिभाषित फ़ंक्शन . यदि आप वैसे भी MySQL का एक नया संस्करण बनाने जा रहे हैं, तो आप एक मूल कार्य ।
डीबी के बाहर डेटा को संसाधित करने का "सही" तरीका है क्योंकि डीबी भंडारण के लिए हैं, प्रसंस्करण के लिए नहीं हैं, और कोई भी भारी प्रसंस्करण डीबीएमएस पर बहुत अधिक भार डाल सकता है। इसके अतिरिक्त, MySQL के बाहर शब्द गणना की गणना करना एक शब्द के रूप में मायने रखता है की परिभाषा को बदलना आसान बनाता है। डीबी में शब्द गणना को संग्रहीत करने और दस्तावेज़ बदलने पर इसे अपडेट करने के बारे में कैसे?
उदाहरण संग्रहीत कार्य:
DELIMITER $$
CREATE FUNCTION wordcount(str LONGTEXT)
RETURNS INT
DETERMINISTIC
SQL SECURITY INVOKER
NO SQL
BEGIN
DECLARE wordCnt, idx, maxIdx INT DEFAULT 0;
DECLARE currChar, prevChar BOOL DEFAULT 0;
SET maxIdx=char_length(str);
SET idx = 1;
WHILE idx <= maxIdx DO
SET currChar=SUBSTRING(str, idx, 1) RLIKE '[[:alnum:]]';
IF NOT prevChar AND currChar THEN
SET wordCnt=wordCnt+1;
END IF;
SET prevChar=currChar;
SET idx=idx+1;
END WHILE;
RETURN wordCnt;
END
$$
DELIMITER ;