标签:创建 长度 ack html from into weight 9.png es2017
参考链接:MySQL的varchar长度问题
今天用mysql做一个demo,创建了个表:
-- 借款表 CREATE TABLE jk ( id int(5) NOT NULL auto_increment, -- 自增ID amount int not null, -- 借款本金 remark varchar(255), -- 备注/摘要 PRIMARY KEY (`id`) ) ; insert into jk(amount,remark) values(20000,‘付张三借款‘); insert into jk(amount,remark) values(10000,‘付王小五借款‘); insert into jk(amount,remark) values(80000,‘付宇文小四借款‘); insert into jk(amount,remark) values(20000,‘付张三12ab借款‘);
由于这个表没有人的姓名做主键(暂不考虑人名重复),想取出来人名,就只能对remark字段做拆解了。
当然拆解的办法不止一种,我的思路是通过length、left、right三个函数,拆解得出借款人的姓名。
具体思路就是,通过left先取出不含“借款”的字符串str_l,再通过right函数对str_l去除"付"字。那么就得到了中间的名字了。
然后我写的代码是:
-- 注意:这是错误写法!!! select jk.id,jk.amount,jk.remark, left(jk.remark,length(jk.remark)-2) as ‘左边‘,# 去掉“借款”2字 right(jk.remark,length(jk.remark)-1) as ‘右边‘,# 去掉“付”字 right( left(jk.remark,length(jk.remark)-2), length(left(jk.remark,length(jk.remark)-2))/3-1 ) as name from jk;
看上去好像没毛病,先取长度,“借款”是两个字,所以减2;“付”是一个字,所以减1。菜鸟如我啊~。
然后结果却是吃了一鲸~
标签:创建 长度 ack html from into weight 9.png es2017
原文地址:http://www.cnblogs.com/zjfblog/p/7744137.html