यह प्रश्न आपके प्रश्न में @otis द्वारा:
mysql> select * from test;
+----+------------------------------+
| id | sentence |
+----+------------------------------+
| 0 | Hello World |
| 1 | Hello World |
| 2 | Mary had a little lamb |
| 3 | Her fleece was white as snow |
| 4 | Everywhere that mary went |
| 5 | Umm, sheep followed her |
+----+------------------------------+
6 rows in set (0.00 sec)
mysql> SELECT sentence, wordcount(sentence) as "Words" from test;
+------------------------------+-------+
| sentence | Words |
+------------------------------+-------+
| Hello World | 2 |
| Hello World | 2 |
| Mary had a little lamb | 5 |
| Her fleece was white as snow | 6 |
| Everywhere that mary went | 4 |
| Umm, sheep followed her | 4 |
+------------------------------+-------+
6 rows in set (0.02 sec)
फ़ंक्शन को काम करने के लिए, आपको MySQL में फ़ंक्शन की घोषणा को निष्पादित करने की आवश्यकता है। यह किसी अन्य क्वेरी को निष्पादित करने जैसा है:
mysql> DELIMITER $$
mysql> CREATE FUNCTION wordcount(str TEXT)
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);
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
$$
Query OK, 0 rows affected (0.10 sec)
mysql> DELIMITER ;