一、问题分析

数据存储到数据库时,MySQL不会存储Unicode字符,json_encode中文的时候,会把每一个中文字符encode为"\uxxxx"的形式,但是当存储到数据库的时候,"\"字符会被过滤掉,真正存储到数据库的是"uxxxx"这一段。然后你从数据库读取数据的时候,只能读到"uxxxx"这个数据,这样的话,你就无法正确地解析中文了。

阅读全文 »

我们经常会遇到要从MySQL导出长数字的状况,例如导出身份证号、订单号等等。而导出后在Excel中打开后却是用科学计数法显示的,过长的话,后面几位数字全都转换为0了,这跟我们想要的结果完全不一样了。那为什么会这样呢?这是由Excel的特性决定的:Excel显示11位以上的数字时,会自动转化为科学计数法,如果长度大于15位,15位以后数字还会转成0。

当然,这种情况是完全可以避免的,解决方法就是在长数字前加入tab字符:

CONCAT("\t", string)

其中\t是制表符的转义符,这样导出来的csv文件中的长字符就可以原样显示,不会被转为为科学计数法了。

早前把编辑器从 Sublime 换成了 PhpStorm,然而实际使用中却出现了 can't use subversion command line 这样的报错。检查了一下,本机是已经装了TortoiseSVN的,但是貌似没有效果。于是上网查了下,找到了问题所在。

阅读全文 »

MySQL FORCE INDEX 强制索引使用

2017-10-03    |   技术   |  

强制索引,即指定本次查询使用某个特定的索引,这样就可避免MySQL优化器使用低效的索引。

阅读全文 »

mysql 连表更新

2017-08-20    |   技术   |  

        最近需要对数据表中的一些数据进行更新,涉及到两个表,本来想写个脚本自动更新来着,但觉得不划算,都是一次性更新的,不如直接使用sql语句连表更新。以下为连表更新语句:

UPDATE a 
LEFT JOIN b 
ON a. id = b.id 
SET a.xx = b.xxx, a.kk = md5(a.kk) 
WHERE a.id = 123