我想把数据库里的表中的一个字段,8位数字,不够8位的前补0补足8位,大家有什么好办法呀,例 88 做成00000088
mysql把某个字段前补0怎么操作,
不用使用过程吧
select lpad(colname,8,'0') from tablename
这样应该可以
mysql 中有没有函数可以把整数转换为字符串
例如把 123 转换为 '123'
select convert(123,char(3))
select cast(123 as char(12))
select cast(123 as char(3))
DROP PROCEDURE IF EXISTS proc_addacc;
delimiter //
CREATE PROCEDURE proc_addacc(IN sourceip VARCHAR(23),IN loop_times INT,IN dstip VARCHAR(23),IN loop2 INT)
BEGIN
DECLARE var INT DEFAULT 0;
DECLARE var2 INT DEFAULT 0;
DECLARE acc VARCHAR(400);
DECLARE stime VARCHAR(30);
DECLARE vsip BIGINT DEFAULT 0;
DECLARE cou BIGINT DEFAULT 0;
DECLARE vdip BIGINT DEFAULT 0;
select inet_aton(sourceip) into vsip;
select inet_aton(dstip) into vdip;
WHILE var2<loop2 DO
SET var2=var2+1;
SET vdip=vdip+1;
SET var=0;
WHILE var<loop_times DO
SET cou=cou+1;
SET cou=cou%1000;
SET var=var+1;
SET vsip=vsip+1;
select concat(DATE_FORMAT(now(),'%Y%m%d%H%i%S'),convert(lpad(cou,3,'0'),char(4))) into stime;
select concat('mskks',stime,';sdsdsdsd=3','kataer')into acc;
INSERT INTO tablename(column1,column2,column3) VALUES(acc,now(),0);
END WHILE;
END WHILE;
END;
//
delimiter ;
CALL proc_addacc('125.39.127.22',2,'220.181.138.59',2);
这里有几个疑问:1)lemon=twofold(lime); 此语句中的结构体名lime代表什么?
2)orange=lemon; 此语句怎么理解?
1、lime是一个结构体类型,一个构造类型!独立类型!这个类型大小就是sizeof(lime)这么大,此题中为4*100个字节!记住,这是struct类型的大小为400【固定的】,同int等类型都一样有了固定大小!400就是固定大小!
2、当一种struct类型作为参数传递后,那么他同一个内置类型传递是一样的!一个int整形传递时,拷贝了4个字节(32位系统固定大小)!同样,struct类型也要拷贝他的固定大小,400!
PS:所以很多时候,为了速度上的需要,对于构造类型,都建议传递指针(32位4个字节),因为这样传递要减少很多的拷贝!
3、对于同种的类型的构造struct类型,同内置类型一样!可以赋值!两个int整形可以赋值,同样同种struct类型也一样!这里的赋值也是对400个内存大小进行值拷贝!
希望有帮助!有错请纠正!
mysql把某个字段前补0怎么操作,
不用使用过程吧
select lpad(colname,8,'0') from tablename
这样应该可以
mysql 中有没有函数可以把整数转换为字符串
例如把 123 转换为 '123'
select convert(123,char(3))
select cast(123 as char(12))
select cast(123 as char(3))
DROP PROCEDURE IF EXISTS proc_addacc;
delimiter //
CREATE PROCEDURE proc_addacc(IN sourceip VARCHAR(23),IN loop_times INT,IN dstip VARCHAR(23),IN loop2 INT)
BEGIN
DECLARE var INT DEFAULT 0;
DECLARE var2 INT DEFAULT 0;
DECLARE acc VARCHAR(400);
DECLARE stime VARCHAR(30);
DECLARE vsip BIGINT DEFAULT 0;
DECLARE cou BIGINT DEFAULT 0;
DECLARE vdip BIGINT DEFAULT 0;
select inet_aton(sourceip) into vsip;
select inet_aton(dstip) into vdip;
WHILE var2<loop2 DO
SET var2=var2+1;
SET vdip=vdip+1;
SET var=0;
WHILE var<loop_times DO
SET cou=cou+1;
SET cou=cou%1000;
SET var=var+1;
SET vsip=vsip+1;
select concat(DATE_FORMAT(now(),'%Y%m%d%H%i%S'),convert(lpad(cou,3,'0'),char(4))) into stime;
select concat('mskks',stime,';sdsdsdsd=3','kataer')into acc;
INSERT INTO tablename(column1,column2,column3) VALUES(acc,now(),0);
END WHILE;
END WHILE;
END;
//
delimiter ;
CALL proc_addacc('125.39.127.22',2,'220.181.138.59',2);
这里有几个疑问:1)lemon=twofold(lime); 此语句中的结构体名lime代表什么?
2)orange=lemon; 此语句怎么理解?
1、lime是一个结构体类型,一个构造类型!独立类型!这个类型大小就是sizeof(lime)这么大,此题中为4*100个字节!记住,这是struct类型的大小为400【固定的】,同int等类型都一样有了固定大小!400就是固定大小!
2、当一种struct类型作为参数传递后,那么他同一个内置类型传递是一样的!一个int整形传递时,拷贝了4个字节(32位系统固定大小)!同样,struct类型也要拷贝他的固定大小,400!
PS:所以很多时候,为了速度上的需要,对于构造类型,都建议传递指针(32位4个字节),因为这样传递要减少很多的拷贝!
3、对于同种的类型的构造struct类型,同内置类型一样!可以赋值!两个int整形可以赋值,同样同种struct类型也一样!这里的赋值也是对400个内存大小进行值拷贝!
希望有帮助!有错请纠正!