mysql计算单词的个数_如何在MySQL字符串中提取第n个单词并计算单词出现次数?...

WITH cte AS (

SELECT digits.idx,

SUBSTRING_INDEX(SUBSTRING_INDEX(words, '~', digits.idx + 1), '~', -1) word

FROM

(SELECT reg_replace(UPPER(txt),

'[^''’a-zA-Z-]+',

'~',

TRUE,

1,

0) AS words

FROM tbl) delimited

INNER JOIN

(SELECT @row := @row + 1 as idx FROM

(SELECT 0 UNION ALL SELECT 1 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) t1,

(SELECT 0 UNION ALL SELECT 1 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) t2,

(SELECT 0 UNION ALL SELECT 1 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) t3,

(SELECT 0 UNION ALL SELECT 1 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) t4,

(SELECT @row := -1) t5) digits

ON LENGTH(REPLACE(words, '~' , '')) <= LENGTH(words) - digits.idx)

SELECT c.word,

subq.occurrences

FROM cte c

LEFT JOIN (

SELECT word,

COUNT(*) AS occurrences

FROM cte

GROUP BY word

) subq

ON c.word = subq.word

WHERE idx = 1; /* idx is zero-based so 1 here gets the second word */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值