mysql - MySQL查询来计算一个单词的出现提供了不稳定的结果
问题描述
这是我的表创建语句:
CREATE TABLE `mytable` (
`id` int(11) NOT NULL,
`value` longtext,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
以下是一些示例数据:
id, value
-----------------------------
'1', '__cccccccc; Myword'
'2', '__ddddddd; Myword'
'3', 'OOO; myword; anotherword'
这是我的查询,旨在计算以下字符串(包括开头的分号和空格)的次数:; myword
出现在记录中:
select `mytable`.`value`, length(`mytable`.`value`) as 'string length', length(replace(`mytable`.`value`,'; myword','')) as 'after replace',
(length(replace(`mytable`.`value`,'; myword',''))-length(`mytable`.`value`)) as 'after sub',
(length(replace(`mytable`.`value`,'; myword',''))-length(`mytable`.`value`))/8 as 'after divide'
from `test`.`mytable`
where LOWER(`mytable`.`value`) like ('%; myword%') OR LOWER(`mytable`.`value`) like ('%; myword');
我得到的结果:
'__cccccccc; Myword', '18', '18', '0', '0.0000'
'__ddddddd; Myword', '17', '17', '0', '0.0000'
'OOO; myword; anotherword', '24', '16', '-8', '-1.0000'
第一个问题,如结果所示,在第一个和第二个记录中,myword
没有找到这个词,但它确实存在。为什么不计算呢?
第二个问题,在最后一条记录中,结果是负数。为什么?我减去 16-24 应该是 8。
解决方案
推荐阅读
- r - 更新列表中的 data.tables
- typescript - 数据标签仅显示绘制在最大值上的最新值
- reactjs - 我必须做什么才能让我的路由器路径正常工作?
- r - 加入2个数据框
- php - PHP Laravel 应用程序令牌不匹配异常错误
- swift - 如何快速解开可选值?
- amazon-web-services - 使用 aws cognito 的最佳实践
- spring-data-jpa - 如何将实体关系中的特定 Envers 修订定位到@Audited 实体?
- c++ - 如何读取字符串中的最后一个字符
- android - Android Studio 谷歌地图 api 和 API 密钥用于发布