我想知道如何将所有列名的所有数据以及表中的值都转换为大写。数据可能包含int
但它会忽略它。我所做的事情是手动将第 1 列更新为 1,这很耗时。
有没有这样的说法:
UPDATE cust SET cust.* = UPPER(cust.*)
谢谢~
我想知道如何将所有列名的所有数据以及表中的值都转换为大写。数据可能包含int
但它会忽略它。我所做的事情是手动将第 1 列更新为 1,这很耗时。
有没有这样的说法:
UPDATE cust SET cust.* = UPPER(cust.*)
谢谢~
动态 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);
不幸的是,你不能直接这样做。您需要指定需要更新的每个列名称。例如
UPDATE tablename
SET col = UPPER(col)
colN = UPPER(colN)
但是,这不是世界末日。您仍然可以这样做,但使用Dynamic SQL。