2010-10-07 43 views
0

我想腳本轉換我的表與轉換值臨時表

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 

祝你好運

回答

1

首先插入所有的值,然後回去和更新LEN()> 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 
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