2012-08-28 16 views
7

एक सरल प्रश्न हैं देता है। फ़ील्ड myField एक टेक्स्ट फ़ील्ड है।mysql गिनती शब्द एसक्यूएल वाक्य रचना में

मेरा प्रश्न यह है: क्या उपर्युक्त क्वेरी को बदलना और myField फ़ील्ड की कुल शब्द गणना प्राप्त करना संभव है?

संपादित: कुल शब्द संख्या से मेरा क्वेरी में सभी चयनित क्षेत्रों के कुल शब्द संख्या, this question से उत्कृष्ट कार्य @ मतलब सभी पंक्तियों में

उदाहरण

+------------------------------+-------+ 
| 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 | 
+------------------------------+-------+ 
+4

प्रश्न बहुत भ्रमित है। कृपया हमें एक छोटा डेटा उदाहरण और अपेक्षित परिणाम प्रदान करें। –

+2

अभी तक - 3 अलग-अलग व्याख्याएं। बस इतना ही कहना चाहता हूं। –

+0

@Andrius Naruševičius यह भ्रमित क्यों है? मैं कॉलम की कुल शब्द गणना पाने के लिए एक तरीका मांगता हूं। भ्रम कहां है? – andrew

उत्तर

13

उपयोग 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) 

Functi बनाने के लिए काम पर, आपको 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 ; 
+2

फिर यह http://stackoverflow.com/questions/748276/using-sql-to-determine-word-count-stats-of-a-text-field – Adi

+0

हाँ का डुप्लिकेट है, लेकिन शायद ओपी नहीं करता है जानें कि फ़ंक्शन को उनकी क्वेरी में कैसे लागू करें। –

+0

यह देखते हुए कि आपके पास संपादन विशेषाधिकार हैं, हो सकता है कि आप एक उत्तर उदाहरण प्रदान करने के लिए उस उत्तर को संपादित कर सकें, फिर टिप्पणी में उससे जुड़ा हुआ हो। शायद। – Adi

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