1

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

有没有这样的说法:

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

谢谢~

4

2 回答 2

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 小提琴演示

于 2013-04-03T03:31:04.583 回答
2

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

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

但是,这不是世界末日。您仍然可以这样做,但使用Dynamic SQL

于 2013-04-03T03:23:43.807 回答