sql >> データベース >  >> RDS >> Mysql

SQLを使用してテキストフィールドの単語数の統計を決定する

    MySQLのテキスト処理機能は、必要なものに対して十分ではありません。ストアド関数はオプションですが、おそらく遅くなります。 MySQL内でデータを処理する最善の策は、を追加することです。ユーザー定義関数 。とにかく新しいバージョンのMySQLをビルドする場合は、ネイティブ関数

    「正しい」方法は、DBが処理ではなくストレージ用であり、重い処理を行うとDBMSに過度の負荷がかかる可能性があるため、DBの外部でデータを処理することです。さらに、MySQLの外部で単語数を計算すると、単語として数えるものの定義を簡単に変更できます。単語数をDBに保存し、ドキュメントが変更されたときに更新するのはどうですか?

    ストアド関数の例:

    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 ;
    


    1. DBMS_METADATA(およびSCHEMA_EXPORT)を使用してOracleSCHEMAをDDLスクリプトとして取得するにはどうすればよいですか。

    2. 主キーにOracleのSYS_GUID()を使用するようにHibernateを構成します

    3. SQLServerでGUIを使用して列を追加または削除する方法-SQLServer/T-SQLチュートリアルパート39

    4. 集計関数を使用したSQLGROUPBYCASEステートメント