Sql server 全局大写TSQL
我可以将数据库中的所有文本全局转换为大写。 这只是测试数据,但其中很多是20000000行145列('char','nchar','varchar','nvarchar') 有人对如何做到这一点有想法吗。。。? 我知道你可以用鞋面Sql server 全局大写TSQL,sql-server,tsql,Sql Server,Tsql,我可以将数据库中的所有文本全局转换为大写。 这只是测试数据,但其中很多是20000000行145列('char','nchar','varchar','nvarchar') 有人对如何做到这一点有想法吗。。。? 我知道你可以用鞋面 Update table set col1 = UPPER(col1) 但这将其限制为单个列 但是,如何使用信息架构视图创建游标并循环所有字符类型列以确定要更新的内容: select table_name, column_name from information_
Update table
set col1 = UPPER(col1)
但这将其限制为单个列
但是,如何使用信息架构视图创建游标并循环所有字符类型列以确定要更新的内容:
select table_name, column_name from information_schema.columns
where data_type in ('char', 'nchar', 'varchar', 'nvarchar')
我的桌子上没有FKs
谢谢如果这是一个黑客式的一次性查询,只需让查询吐出一些可复制/粘贴的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])
如果是一次性的,只需让查询吐出一些可复制/粘贴的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])
应该很容易破解其中一个全局搜索并替换脚本来实现这一点。示例:您为什么要这样做。听起来您想“加速”不区分大小写的比较。还请注意,在非拉丁字符集上执行此操作非常棘手。这是为cobol创建一个仅为大写的xml数据集。要做到这一点,应该很容易破解其中一个全局搜索和替换脚本。示例:您为什么要这样做。听起来您想“加速”不区分大小写的比较。还要注意的是,这在非拉丁字符集上是非常棘手的,它是为cobol创建一个仅为大写的xml数据集。