这是我的表创建语句:
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。