具有转换值的临时表

时间:2010-10-07 12:54:35

标签: sql sql-server-2005

我希望脚本转换我的表

CREATE TABLE #TempTable (
Code nvarchar(5) primary key,
name nvarchar(100) )

Insert into #TempTable (Code ,name) 
Select st.Code , st.name From StaticTable st

但我必须改变一些事情。

代码必须从100

自动增量

如果代码长度超过3,那么我想插入整数,何时不想复制此代码

所以来自

    Code   Name
    ABCD   Namezxc
    EFGH   Nameasd
    IJK    Nameqwe

我想通过记录获得临时性:

Code Name
100    Namezxc
101    Nameasd
IJK  Nameqwe

祝你好运

2 个答案:

答案 0 :(得分:1)

试试这个:

SELECT Case When Len(st.Code) <4 THEN IDENTITY(int, 100,1) 
           Else st.Code End As Code,
       st.name
INTO #TempTable 
FROM StaticTable  st

查看更多herehere

答案 1 :(得分:1)

首先插入所有值,然后返回并使用LEN()&gt;更新那些值。 3.只需使用阴影(因为它是一个nvarchar,你必须投射)增量变量。

CREATE TABLE #TempTable (
    Code nvarchar(5) primary key,
    name nvarchar(100) 
)

Insert into #TempTable (Code ,name) 
Select st.Code , st.name From (
   select 'ABCD' AS Code, 'Namezxc' as name union all
   select 'EFGH' AS Code, 'Nameasd' as name union all
   select 'IJK' AS Code, 'Nameqwe' as name 
) st

declare @vintCounter as nvarchar(5)
set @vintCounter = N'99'

update #TempTable
     SET @vintCounter = Code = cast(@vintCounter as int) + 1
where len(Code) > 3

select * from #TempTable