none
如何在SQL表添加数据? RRS feed

  • 问题

  • 在SQL表中有“票据号”字段,我想添加连续的50个票据号,但又不想一个一个地输入,请教各位大侠怎样用语句来实现?例如:0007801-0007850
    youl
    2009年9月28日 2:02

答案

  • DECLARE @Id INT, @MaxId INT
    --DECLARE @代办费票据 TABLE (票据号 VARCHAR(70)) -- 这个是临时表,用你的物理表名代码临时表名
    
    SET @Id = 7801
    SET @MaxId = 7850
    
    WHILE @Id <= @MaxId BEGIN
     INSERT INTO [代办费票据] VALUES (REPLICATE('0', 7-LEN(@Id)) + CAST(@id AS VARCHAR(50)))
     SET @Id = @Id + 1
    END
    
    SELECT * FROM [代办费票据]

    知识改变命运,奋斗成就人生!
    • 已标记为答案 youer3 2009年9月28日 23:39
    2009年9月28日 8:37
    版主

全部回复

  • 将数据保存在xml或者其他格式中通过bulk insert http://msdn.microsoft.com/zh-cn/library/ms188365.aspx

    但是这里数据量不多,直接循环插入也无关系~~

    declare @i int=7801
    while @i<7850
    begin
    insert myTable (票据号) values('000'+cast(@i as varchar))
    set @i=@i+1
    end
    select * from myTable


    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年9月28日 4:54
    版主
  • 你好!

    使用下面的方式即可

    DECLARE @Id INT, @MaxId INT
    DECLARE @T TABLE (Id VARCHAR(70))
    
    SET @Id = 7801
    SET @MaxId = 7850
    
    WHILE @Id <= @MaxId BEGIN
    	INSERT INTO @T VALUES (REPLICATE('0', 7-LEN(@Id)) + CAST(@Id AS VARCHAR(50)))
    	SET @Id = @Id + 1
    END
    
    SELECT * FROM @T


    知识改变命运,奋斗成就人生!
    2009年9月28日 5:03
    版主
  • declare @i int=3618401
    while @i<3618450
    begin
    insert 代办费票据 (票据号) values(cast(@i as varchar))
    set @i=@i+1
    end
    select * from 代办费票据

    我在存储过程中使用了上述语句,得到的提示如下:

    消息 139,级别 15,状态 1,第 0 行
    不能向局部变量赋予默认值。
    消息 137,级别 15,状态 2,第 2 行
    必须声明标量变量 "@i"。
    消息 137,级别 15,状态 2,第 4 行
    必须声明标量变量 "@i"。
    消息 137,级别 15,状态 2,第 5 行
    必须声明标量变量 "@i"。

    请指教!!
    youl
    2009年9月28日 7:12
  • 我想把票据号追加到已知表中([2009年9月报名数据库].[dbo].[代办费票据]),不知如何操作?
    youl
    2009年9月28日 7:46
  • 你好!

    我上面的代码已经实现了你的功能,你只需要将表名和字段名改为你自己的表名和字段名即可。

    知识改变命运,奋斗成就人生!
    2009年9月28日 7:49
    版主
  • DECLARE @Id INT, @MaxId INT
    DECLARE @代办费票据 TABLE (票据号 VARCHAR(70))

    SET @Id = 7801
    SET @MaxId = 7850

    WHILE @Id <= @MaxId BEGIN
     INSERT INTO @代办费票据 VALUES (REPLICATE('0', 7-LEN(@Id)) + CAST(@id AS VARCHAR(50)))
     SET @Id = @Id + 1
    END

    SELECT * FROM @代办费票据

    我这样做的,执行后,在结果中可以看到这些票据号,但在代办费票据这个表中并没有这些票据号。请指点!!


    youl
    2009年9月28日 8:35
  • DECLARE @Id INT, @MaxId INT
    --DECLARE @代办费票据 TABLE (票据号 VARCHAR(70)) -- 这个是临时表,用你的物理表名代码临时表名
    
    SET @Id = 7801
    SET @MaxId = 7850
    
    WHILE @Id <= @MaxId BEGIN
     INSERT INTO [代办费票据] VALUES (REPLICATE('0', 7-LEN(@Id)) + CAST(@id AS VARCHAR(50)))
     SET @Id = @Id + 1
    END
    
    SELECT * FROM [代办费票据]

    知识改变命运,奋斗成就人生!
    • 已标记为答案 youer3 2009年9月28日 23:39
    2009年9月28日 8:37
    版主