1. 程式人生 > >mysql 的varchar類型小記

mysql 的varchar類型小記

har 寫法 images post 得出 分享 沒有 長度 技術分享

參考鏈接: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類型小記