如题,有一个表table1,有200多个字段,比如G101_MAX,G101_MIN,G202_MAX,G202_MIN,G301_MAX,G301_MIN,G501_MAX,G501_Min.............如果查询出来,显示的列表题头字段名称全是英文还有一个表tablename,这个表中就两个字段,一个是Name,一个是Code。这个表中存的数据举例如下
Name Code
分配率 G101
成功率 G202
失败率 G301
上行率 G501
下行率 G601
上线率 G701
下线率 G801我想创建一个临时表,把G101、G202、G301的字段名称都换成从table2表中提出的中文名称,这样我查询出的列表题头字段就能转成中文了。比如分配率_max,分配率_min,成功率_max,成功率_min,上行率_max,上行率_min,上线率_max,上线率_min。
怎么转换呢,谢谢,在线等。如果问题描述不清,我接下来可以补充。
Name Code
分配率 G101
成功率 G202
失败率 G301
上行率 G501
下行率 G601
上线率 G701
下线率 G801我想创建一个临时表,把G101、G202、G301的字段名称都换成从table2表中提出的中文名称,这样我查询出的列表题头字段就能转成中文了。比如分配率_max,分配率_min,成功率_max,成功率_min,上行率_max,上行率_min,上线率_max,上线率_min。
怎么转换呢,谢谢,在线等。如果问题描述不清,我接下来可以补充。
首先获取某一个表的所有字段
select name from syscolumns where id=object_id('表名')
然后再与你的表tablename关联,把每个字段换成name,然后再定义一个字符串变量,把创建白哦的语句拼接出来,再执行
DECLARE @s NVARCHAR(max)
SELECT @s=ISNULL(@s+',','select ')+a.Name+' as '+REPLACE(a.Name,b.Code,b.NAME)
FROM syscolumns AS a
inner JOIN tablename AS b ON a.Name LIKE b.Code+'_%'
WHERE ID=OBJECT_ID('table1')EXEC(@s+' from table1')
思路就是那样的啊,这个没有现成的表,也没法测试:declare @str varchar(max)
set @str=''
select @str=@str+','+name+' int' from (
select b.name from syscolumns a inner join tablename b on a.name=b.code)c
where id=object_id('table1')--你然后把@str print出来看看,看看哪些多余的就删掉,反正最后拼接的语句是你的创建表的语句
create table table1
(G101 int,
G202 int,
G301 int,
G501 int,
G601 int,
G701 int,
G801 int
)
go
----drop table table1DECLARE @v sql_variant
SET @v = N'分配率'
EXECUTE sp_addextendedproperty N'MS_Description', @v, N'SCHEMA',N'dbo', N'TABLE', N'table1', N'COLUMN', N'G101'
SET @v = N'成功率'
EXECUTE sp_addextendedproperty N'MS_Description', @v, N'SCHEMA',N'dbo', N'TABLE', N'table1', N'COLUMN', N'G202'
SET @v = N'失败率'
EXECUTE sp_addextendedproperty N'MS_Description', @v, N'SCHEMA',N'dbo', N'TABLE', N'table1', N'COLUMN', N'G301'
SET @v = N'上行率'
EXECUTE sp_addextendedproperty N'MS_Description', @v, N'SCHEMA',N'dbo', N'TABLE', N'table1', N'COLUMN', N'G501'
SET @v = N'下行率'
EXECUTE sp_addextendedproperty N'MS_Description', @v, N'SCHEMA',N'dbo', N'TABLE', N'table1', N'COLUMN', N'G601'
SET @v = N'上线率'
EXECUTE sp_addextendedproperty N'MS_Description', @v, N'SCHEMA',N'dbo', N'TABLE', N'table1', N'COLUMN', N'G701'
SET @v = N'下线率'
EXECUTE sp_addextendedproperty N'MS_Description', @v, N'SCHEMA',N'dbo', N'TABLE', N'table1', N'COLUMN', N'G801'select * from fn_listextendedproperty ('MS_Description','SCHEMA','dbo','table','table1','COLUMN',null)
'+name+' int' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~???????这个怎么会有int呢