数据 表t_depart
---------------------------------------------------------------------------
code(vechar 20) name parent(vechar 20)
---------------------------------------------------------------------------
01 总部
0101 营销一部 01
0102 营销二部 01
0103 营销三部 01
0104 营销四部 01
该表是部门表,无限分类
我现在想实现用程序往表里边添加数据时能自动算出新的部门号,即现在添加总部的子部门01时,下边就应该是0105了
SELECT right( '10000' + cast( max( code ) AS unsigned ) +1, 4 ) FROM t_depart WHERE parent = '01';
从字符串str 开始,返回最右len 字符。加10000是为了能从右取4个数,因此只要是加10000的正数倍都是可以的。
cast()函数主要是为了转化数据类型 CAST(expr AS type)
这个类型 可以是以下值其中的 一个:
BINARY[(N)]
CHAR[(N)]
DATE
DATETIME
DECIMAL
SIGNED [INTEGER]
TIME
UNSIGNED [INTEGER]
其他的就不解释了。