第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

使用SQL確定文本字段的字?jǐn)?shù)統(tǒng)計(jì)

使用SQL確定文本字段的字?jǐn)?shù)統(tǒng)計(jì)

慕沐林林 2019-12-04 10:09:45
我最近一直在研究一些數(shù)據(jù)庫搜索功能,希望獲得一些信息,例如每個(gè)文檔的平均單詞數(shù)(例如數(shù)據(jù)庫中的文本字段)。到目前為止,我發(fā)現(xiàn)的唯一內(nèi)容(沒有在DB外部進(jìn)行選擇的語言處理)是:SELECT AVG(LENGTH(content) - LENGTH(REPLACE(content, ' ', '')) + 1)FROM documents這似乎可行*,但您還有其他建議嗎?我目前使用的是MySQL 4(希望很快將其遷移至該應(yīng)用程序的版本5),但也對通用解決方案感興趣。謝謝!*我可以想象這是確定它的一種相當(dāng)粗糙的方法,因?yàn)樗矝]有考慮內(nèi)容等中的HTML。這個(gè)特定項(xiàng)目可以,但是還有更好的方法嗎?更新:定義“更好”的意思是:更準(zhǔn)確,執(zhí)行效率更高或更“正確”(易于維護(hù),良好實(shí)踐等)。對于我可用的內(nèi)容,上面的查詢足夠快并且對于該項(xiàng)目來說是準(zhǔn)確的,但是將來我可能需要類似的內(nèi)容(所以我問)。
查看完整描述

3 回答

?
猛跑小豬

TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊

MySQL的文本處理功能不足以滿足您的需求。存儲功能是一個(gè)選項(xiàng),但可能會(huì)很慢。在MySQL中處理數(shù)據(jù)的最佳選擇是添加一個(gè)用戶定義的函數(shù)。無論如何,如果要構(gòu)建MySQL的較新版本,也可以添加一個(gè)native函數(shù)。


“正確”的方法是在數(shù)據(jù)庫外部處理數(shù)據(jù),因?yàn)閿?shù)據(jù)庫用于存儲而不是處理,并且任何繁重的處理都可能給DBMS帶來過多的負(fù)擔(dān)。此外,在MySQL之外計(jì)算字?jǐn)?shù)使更改字?jǐn)?shù)定義變得更加容易。更改文檔時(shí)如何將單詞計(jì)數(shù)存儲在數(shù)據(jù)庫中并進(jìn)行更新?


存儲功能示例:


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 ;


查看完整回答
反對 回復(fù) 2019-12-04
?
HUH函數(shù)

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個(gè)贊

盡管速度略有降低,但速度要快得多。我發(fā)現(xiàn)它的計(jì)數(shù)為4%,對于“估計(jì)”方案來說還可以。


SELECT

    ROUND (   

        (

            CHAR_LENGTH(content) - CHAR_LENGTH(REPLACE (content, " ", "")) 

        ) 

        / CHAR_LENGTH(" ")        

    ) AS count    

FROM documents


查看完整回答
反對 回復(fù) 2019-12-04
  • 3 回答
  • 0 關(guān)注
  • 1388 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號