当前位置:Gxlcms > 数据库问题 > mysql 的varchar类型小记

mysql 的varchar类型小记

时间:2021-07-01 10:21:17 帮助过:4人阅读

借款表 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   

人气教程排行