一组数据前面不动,后面自增

2017-01-11 00:17 出处:360java.com 作者:360java 评论(
cuId int identity(201307050001,1) primary key请问怎么写一个方法保证前面20130705不动?界面我需要显示的是20130705 而后面的00001不显示,...

cuId int identity(201307050001,1) primary key

请问怎么写一个方法保证前面20130705不动?界面我需要显示的是20130705 而后面的00001不显示,并且在添加的时候要自增,之前我弄了一个方法

  public void Show()
        {
            string sql = "select top 1 productId from product";
            var str11 = sql.Substring(0,5);
        }

这样保证了显示的时候不出现0001,但是我感觉还是不对,请大家给个建议!谢谢!有类似这样的做法的朋友给个建议!谢谢!

最佳答案

看不懂你说的东西?你数据库是不是有一列数据,前面是8位日期后面是5位自增长的数据啊?怎么会用数据库的自增长呢??

这个问题好像是列的自增长问题。

几种做法:

1、可以把这一列拆分成两列,一列是2013070500001,一列是1,插入下一条语句时,用insert into table1(...) select isnull(max(id),0)+1,col1,col2,如果考虑灵活,还可以把日期再单独列出来,这样不同日期,种子是从1开始;
2、将系统中所有增长的序号,记录到一张种子表,每次插入数据,取这个值加1,并更新种子表。

3、通过程序记录这个种子,比如写到xml文件中。(与2大同小异)

这些方法的好处就是数据处理比较方便,如果你用了数据库自增长字段,那么数据的迁移就很麻烦,多数据库的对应也不方便。

嗯,你的那种想法,我也到网上看过,但是我在弄的时候还是搞不来,最好不得不来问问了,再麻烦你点,详细点,给个代码最好了,有了代码可以学习下思路,刚学会有很多问题都不懂,只能从代码下手了!麻烦了,谢谢!

@梦魔问世: 

1、首先创建表
create table Table1(
cd char(13),
id int,
Name Nvarchar(100)
);

2、插入数据

insert into Table1
select
 '20130705' + substring(cast((isnull(MAX(id),0) + 1)+100000 as varchar(6)),2,5) as cd,
 isnull(MAX(id),0)+1 as id,
 '张三' as Name
 from Table1

@梦魔问世: 下面这个插入语句可以执行多次,你就看到效果了

@kylin.chen: 好的!谢谢你耐心的解答,非常感谢!

分享到:
本文标签:

相关文章

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

Copyright (C) 360java 360java.com, All Rights Reserved.

苏ICP备16022210号