我可以将数据库中的所有文本全局转换为UPPER CASE。 这只是测试数据,但很多是20,000,000行145列('char','nchar','varchar','nvarchar')
有没有人有关于如何做到这一点的想法......? 我知道你可以使用UPPER
Update table
set col1 = UPPER(col1)
但这限制了它的个别专栏 但是如何使用信息架构视图创建游标并循环遍历所有字符类型列以确定要更新的列:
select table_name, column_name from information_schema.columns
where data_type in ('char', 'nchar', 'varchar', 'nvarchar')
表中没有FK 感谢
答案 0 :(得分:3)
如果它是一个hacky one-off只是让查询吐出一些copy / pasteable SQL;
SELECT 'update [' + p1.table_name + '] set ' +
(SELECT
CASE WHEN ROW_NUMBER() OVER (order by column_name) > 1 THEN ',' ELSE '' END
+ '[' + column_name + ']=upper([' + column_name + '])'
FROM information_schema.columns p2
WHERE p2.table_name = p1.table_name and p2.data_type in ('char', 'nchar', 'varchar', 'nvarchar')
ORDER BY table_name
FOR XML PATH('')
) AS blah
FROM information_schema.columns p1
WHERE p1.data_type in ('char', 'nchar', 'varchar', 'nvarchar')
GROUP BY table_name;
会吐出来的;
update [Tbl] set [F1]=upper([F1]),[F2]=upper([F2])