2.现在有ID,NO,两个字段,ID自增1,2,3....,要求NO(0001,0002....)和ID的数保持一致,不足四位前面补0,怎么实现啊?
在下恭候各位的回答了...菜鸟等待ING.....
18 个解决方案
#1
生成这样的流水号不难,难的是并发
string strNum="3"
if(strNum.Length==1)
{
strNum="000"+strNum;
}
if(strNum.Length==2)
{
strNum="00"+strNum;
}
if(strNum.Length==3)
{
strNum="0"+strNum;
}
if(strNum.Length==4)
{
strNum=strNum;
}
string strNum="3"
if(strNum.Length==1)
{
strNum="000"+strNum;
}
if(strNum.Length==2)
{
strNum="00"+strNum;
}
if(strNum.Length==3)
{
strNum="0"+strNum;
}
if(strNum.Length==4)
{
strNum=strNum;
}
#2
学习了
#3
NO直接用数据库的公式字段就行了
#4
小于10000也可以滴......
#5
string strNum="3"
if(strNum.Length==1)
{
strNum="000"+ID;
}
if(strNum.Length==2)
{
strNum="00"+ID;
}
if(strNum.Length==3)
{
strNum="0"+ID;
}
if(strNum.Length==4)
{
strNum=convert.toint32(strNum)+id;
}
这样是否可以
#6
难倒是不难,有并发就麻烦了。
select right('0000'+cast(1 as varchar(4)),4)
select right('0000'+cast(9999 as varchar(4)),4)
/*
--------
0001
(所影响的行数为 1 行)
--------
9999
(所影响的行数为 1 行)
*/
#7
大家说的都有道理,可是我想的是怎么样先取出数据库里面最大的ID,然后在次基础上生成(保持4位数)流水号,再递增1;如当前id是13,那么我先取出这个13,然后id=13 ,再+1 ,ID为14,然后不足四位补“0”变成0014;依照此理,再生成0015....0099...0100等等。每个数之间都是递增的
#8
select top 1 id from table order by id asc
查出最大id后,。。。。
#9
string No=id.ToString("0000")
#10
顶上。。
#11
我有一个问题没有搞清楚,你是打算让数据库自动生成,还是打算用代码生成,然后把代码生成的数据插入到数据库中?
#12
你这个不是一个道理吗?晕
#13
strNum=convert.toint32(strNum)+id;
你这句话错了 刚刚没看清出.. 你是string的strNum怎么转换成convert.toInt32()后又加了ID的字符串 这就话肯定是错的了...呵呵
你这句话错了 刚刚没看清出.. 你是string的strNum怎么转换成convert.toInt32()后又加了ID的字符串 这就话肯定是错的了...呵呵
#14
1. select max(id) as id from 表名
2. string strId= id.toString(); //转换id为string类型
3. strId=strId.PadLeft(4,'0'); //不足4位前面补‘0’
2. string strId= id.toString(); //转换id为string类型
3. strId=strId.PadLeft(4,'0'); //不足4位前面补‘0’
#15
忘了+ 1 2. 改为 string strId= (id+1).toString;//id+1后转为 string 类型
#16
或者 直接用在sql语句中计算获取:
select right(10000+max(id)+1,4) as NO from 表名
获得的 NO 既是 前面补足4位 的 NO号。
如 当前最大id号是13【max(id)】 10000+13+1=10014 right取右边的4位既 0014
注意:10000 这个数的‘0’的个数 一定要 >= 4
select right(10000+max(id)+1,4) as NO from 表名
获得的 NO 既是 前面补足4位 的 NO号。
如 当前最大id号是13【max(id)】 10000+13+1=10014 right取右边的4位既 0014
注意:10000 这个数的‘0’的个数 一定要 >= 4
#17
如果你要在插入数据时就生成该流水号,可以下面语法:
INSERT INTO 表名(no) values(right('0000'+cast(@@identity as nvarchar))
INSERT INTO 表名(no) values(right('0000'+cast(@@identity as nvarchar))
#18
应该是
INSERT INTO 表名(no) values(right('0000'+cast(@@identity as nvarchar),4))
INSERT INTO 表名(no) values(right('0000'+cast(@@identity as nvarchar),4))
#1
生成这样的流水号不难,难的是并发
string strNum="3"
if(strNum.Length==1)
{
strNum="000"+strNum;
}
if(strNum.Length==2)
{
strNum="00"+strNum;
}
if(strNum.Length==3)
{
strNum="0"+strNum;
}
if(strNum.Length==4)
{
strNum=strNum;
}
string strNum="3"
if(strNum.Length==1)
{
strNum="000"+strNum;
}
if(strNum.Length==2)
{
strNum="00"+strNum;
}
if(strNum.Length==3)
{
strNum="0"+strNum;
}
if(strNum.Length==4)
{
strNum=strNum;
}
#2
学习了
#3
NO直接用数据库的公式字段就行了
#4
小于10000也可以滴......
#5
string strNum="3"
if(strNum.Length==1)
{
strNum="000"+ID;
}
if(strNum.Length==2)
{
strNum="00"+ID;
}
if(strNum.Length==3)
{
strNum="0"+ID;
}
if(strNum.Length==4)
{
strNum=convert.toint32(strNum)+id;
}
这样是否可以
#6
难倒是不难,有并发就麻烦了。
select right('0000'+cast(1 as varchar(4)),4)
select right('0000'+cast(9999 as varchar(4)),4)
/*
--------
0001
(所影响的行数为 1 行)
--------
9999
(所影响的行数为 1 行)
*/
#7
大家说的都有道理,可是我想的是怎么样先取出数据库里面最大的ID,然后在次基础上生成(保持4位数)流水号,再递增1;如当前id是13,那么我先取出这个13,然后id=13 ,再+1 ,ID为14,然后不足四位补“0”变成0014;依照此理,再生成0015....0099...0100等等。每个数之间都是递增的
#8
select top 1 id from table order by id asc
查出最大id后,。。。。
#9
string No=id.ToString("0000")
#10
顶上。。
#11
我有一个问题没有搞清楚,你是打算让数据库自动生成,还是打算用代码生成,然后把代码生成的数据插入到数据库中?
#12
你这个不是一个道理吗?晕
#13
strNum=convert.toint32(strNum)+id;
你这句话错了 刚刚没看清出.. 你是string的strNum怎么转换成convert.toInt32()后又加了ID的字符串 这就话肯定是错的了...呵呵
你这句话错了 刚刚没看清出.. 你是string的strNum怎么转换成convert.toInt32()后又加了ID的字符串 这就话肯定是错的了...呵呵
#14
1. select max(id) as id from 表名
2. string strId= id.toString(); //转换id为string类型
3. strId=strId.PadLeft(4,'0'); //不足4位前面补‘0’
2. string strId= id.toString(); //转换id为string类型
3. strId=strId.PadLeft(4,'0'); //不足4位前面补‘0’
#15
忘了+ 1 2. 改为 string strId= (id+1).toString;//id+1后转为 string 类型
#16
或者 直接用在sql语句中计算获取:
select right(10000+max(id)+1,4) as NO from 表名
获得的 NO 既是 前面补足4位 的 NO号。
如 当前最大id号是13【max(id)】 10000+13+1=10014 right取右边的4位既 0014
注意:10000 这个数的‘0’的个数 一定要 >= 4
select right(10000+max(id)+1,4) as NO from 表名
获得的 NO 既是 前面补足4位 的 NO号。
如 当前最大id号是13【max(id)】 10000+13+1=10014 right取右边的4位既 0014
注意:10000 这个数的‘0’的个数 一定要 >= 4
#17
如果你要在插入数据时就生成该流水号,可以下面语法:
INSERT INTO 表名(no) values(right('0000'+cast(@@identity as nvarchar))
INSERT INTO 表名(no) values(right('0000'+cast(@@identity as nvarchar))
#18
应该是
INSERT INTO 表名(no) values(right('0000'+cast(@@identity as nvarchar),4))
INSERT INTO 表名(no) values(right('0000'+cast(@@identity as nvarchar),4))