繁体   English   中英

具有转换值的温度表

[英]Temp table with converted values

我希望脚本转换表

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

最好的祝福

试试这个:

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

在这里这里看到更多

首先插入所有值,然后返回并使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM