2016-10-17 66 views
0

通過這個我失去選擇的所有列數據爲上選擇全部列數據爲上

目前我使用upper(columnname) as 'xyz'山坳名我不想

,我的要求是select col1,col2,col3,col4 from xyz table

我正在尋找一個可以讓所有4山坳以單語法上不失山坳名

E中的方法G:select Upper(col1,col2,col3,col4) from xyz table

+2

使用'select upper(colname)as colname' – yvs

+0

'upper(columnname)as'xyz'' is invalid(standard)SQL。標識符需要用雙引號括起來('as「xyz」')。單引號(''')僅用於字符串常量。 –

+0

我的查詢運行良好,但我有20列的名稱,所以在這種情況下,我必須寫20次上,並給別名 – Aamir

回答

0

嘗試這個

DECLARE @columnName varchar(25) 
DECLARE @cursor CURSOR 
declare @sql nvarchar(1000) 
declare @tableName as nvarchar(30) 
set @tableName = 'YOURTABLE' 
SET @cursor = CURSOR FOR 
select c.name from sys.columns c inner join sys.tables t on c.object_id = t.object_id 
where c.object_id = (select object_id from sys.tables where name = @tableName) 


OPEN @cursor 

FETCH NEXT 

FROM @cursor INTO @columnName 
WHILE @@FETCH_STATUS = 0 
BEGIN 


set @sql = 'update YOURTABLE set '+ @columnName +' = upper(' + @columnName + ') where YOURTABLE.'[email protected]+' = YOURTABLE.'+ @columnName+'' 
EXEC(@sql) 


FETCH NEXT 
FROM @cursor INTO @columnName 
END 

CLOSE @cursor 
DEALLOCATE @cursor 

UPDATE:你必須更新所有列,使所有的人都會變成大寫

請注意: 請備份您的表之前PROCEEDING 更改YOURTABLE到您的表名

+0

如果這是解決方案,請將其標記爲答案,謝謝! –

-1

試試這個:

select UPPER(col1) AS Col1,UPPER(col2) AS col2,UPPER(col3) as 
    col3,UPPER(col4) as col4 from xyz table