记标题章节错误,批量更改

某小说章节有600章左右,但是在79章之后的所有标题中的章节序号均发生错误,但是序号是对的,粗略的表结构如下

id      标题             序号
1280    第七十九章 标题    80
1281    第八十章 标题      81
...

也就是说需要把标题中序号都更正过来,稍微构思了一下, 是否可以用replace函数 做正则替换呢...但是查了资料,好像是不行的,于是就采用了下面的方法

update txt set title=concat('第',seq,(substring(title,instr(title,'章')) )) where bid=33 and seq>=80;

上述语句中, 用了3个mysql 的内置函数 分别是

instr(str,substr) 返回字符串substr在字符串str第一次出现的位置(str不包含substr时返回0)
substring(str,pos) 返回字符串str的位置pos起的一个子串 concat(str1,str2,...)
把参数连成一个长字符串并返回(任何参数是null时返回null)



mysql存储过程&时间累加插入

DELIMITER $$
CREATE DEFINER=`root`@`%` PROCEDURE `cday`( a int  )
BEGIN
declare i int; 
set i = 1; 
while i < a do  
insert into day_time (ctime)  select (ctime+86400) ctime from day_time order by ctime desc limit 1;
set i = i +1;
end while;
END$$
DELIMITER ;

上述代码 执行方法为 call cday(10);
将往day_time 表插入 9条数据


mysql 中时间怎么进行统计?

表数据如下

日期        通话时间    通话类型  通话号码
2008-09-08  00:30:05 主叫     13212121234
2008-09-07  00:20:35 主叫     13212121234

×××
球总通话时长?
可能你会认为这个很简单

select  sum(通话时间) from table

但是你会得到你所意外的结果

sum(通话时间)
5040    ~大概可能是这个结果

What?怎么会是这样的呢
对于mySql来说其实际算法是将datetime类型字段值按4位年、2位月、2位日、2位时、2位分、2位秒顺序组成一个数字后再进行累加
那么正确的写法呢?

SELECT  
  SEC_TO_TIME( SUM( TIME_TO_SEC( `通话时间` ) ) ) AS 总时长
FROM table;




采用mysql 8 后 ,php链接不上 mysql 解决办法

安装mysql 8.0的时候会让你选择一个加密方式,好像是选了一个新的方式(Caching SHA-2), 结果pdo连mysql的时候死活没有通过,只是报这个错误:

"SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client"

只要在my.cnf配置文件中更改加密方式为之前的版本即可!

default_authentication_plugin=mysql_native_password

然而经过测试,上述方法可能并不管用,最后的解决办法是重新安装mysql8 在安装的时候不要选择Caching SHA-2 选择兼容以前的版本,问题解决!

mysql全文索引

今天看了下 mysql 的文档, 突然发现以前停留的mysql不支持中文的全文索引的'经验'直到看到:

从MySQL 5.7.6开始,MySQL提供了支持中文,日文和韩文(CJK)的内置全文ngram解析器

才发现原来已经可以用mysql做中文的 全文索引了.
而且经过测试相比与 like 效率要高很多
全文索引的查询方法:
在where关键词 后面 MATCH title AGAINST('漂亮的女人') 这样的语法结构
例如这样的查询语句

select * from arc where  MATCH `title`  AGAINST('漂亮的女人')

查询结果会把 包含 漂亮 漂亮的 ,的女人,女人 的结果都列出来, 当然匹配度最高的优先在前面.
当然前提是已经做好了索引,才能用上面的方法
创建索引的方法如下 :

ALTER TABLE arc ADD FULLTEXT INDEX ft_title (title) WITH PARSER ngram;

下面是具体用法
fulltext-search