SQL Server UPPERCASE用于表中所有列的所有数据

时间:2013-04-03 03:19:45

标签: sql-server tsql

我想知道如何将所有列的所有数据转换为UPPERCASE以及表中的值。数据可能包含int,但会忽略它。我做的是手动更新第1列1,这很费时间。

是否有任何声明:

UPDATE cust SET cust.* = UPPER(cust.*)

谢谢〜

2 个答案:

答案 0 :(得分:4)

动态SQL可能是您唯一的选择。这样的事情应该使用FOR XML查询INFORMATION_SCHEMA.COLUMNS

declare @query varchar(max)
set @query = ''

select @query =
  STUFF((
    select ';UPDATE ' + table_name + ' SET ' + column_name + ' = UPPER(' + column_name + ')'
    from INFORMATION_SCHEMA.COLUMNS
    order by table_name, column_name
    for xml path('')
        ), 1, 1, '')

execute(@query);

SQL Fiddle Demo

答案 1 :(得分:2)

不幸的是,你不能直接这样做。您需要指定需要更新的每个列名称。例如

UPDATE tablename
SET    col = UPPER(col)
       colN = UPPER(colN)

但是,这不是世界末日。您仍然可以使用动态SQL 来完成此操作。

相关问题