码迷,mamicode.com
首页 > 数据库 > 详细

mysql 的varchar类型小记

时间:2017-10-27 17:44:25      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:创建   长度   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。菜鸟如我啊~。

然后结果却是吃了一鲸~

技术分享

 

mysql 的varchar类型小记

标签:创建   长度   ack   html   from   into   weight   9.png   es2017   

原文地址:http://www.cnblogs.com/zjfblog/p/7744137.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!