表imp_sheet1,結構如下:
col1 col2 col3 col4 col5 col6 col7 col8
公司 公司名稱 采購訂單 行專案 識訓憑證 識訓行專案 最后識訓日期 實際識訓過賬日期
上面col行為表的列名,按數字順序遞增,漢字行為需要修改成的列名,不一定是8行,有可能會有10行,100行,請教下如何使用陳述句批量修改列名。
uj5u.com熱心網友回復:
USE tempdb
GO
IF OBJECT_ID('t') IS NOT NULL
DROP TABLE t
GO
CREATE TABLE t(
姓名 NVARCHAR(20),
性別 INT,
生日 DATETIME
)
GO
---------- 以上為演示表 -------------
SELECT * FROM t
/*
姓名 性別 生日
*/
--1. 定義表變數
DECLARE @r TABLE (
column_id INT,
[name] NVARCHAR(100)
)
--2. 現有串列存入表變數
INSERT INTO @r(column_id,[name])
SELECT column_id,[name] FROM sys.columns WHERE OBJECT_ID=OBJECT_ID('t');
--3. 遍歷所有列,并更改列名
DECLARE @i INT,@iMax INT,@oldName NVARCHAR(30),@newName NVARCHAR(30)
SELECT @i=1,@iMax=MAX(column_id) FROM @r;
--
WHILE @i<=@iMax
BEGIN
SELECT @oldName='t.'+[name]
,@newName='col'+LTRIM(@i)
FROM @r WHERE column_id=@i;
--
EXEC sp_rename @oldName,@newName
SET @i=@i+1;
END
--4. 驗證
SELECT * FROM t;
/*
col1 col2 col3
*/
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/268163.html
標籤:應用實例
上一篇:檔案比對
