作者:vghoon | 来源:互联网 | 2022-12-02 18:42
本周风险部门告诉我们,我们的系统必须只接受大写的文本.我们已经生产了将近6个月,而这在初始项目中没有考虑到.有没有简单的方法将数据库的所有varchars转换为大写?
1> Zhorov..:
我不知道这是否是最好的方法,但我有时会使用它.它使用sys.columns目录视图,使用FOR XML
子句生成动态语句,并使用sp_executesql执行生成的语句.
DECLARE
@stm nvarchar(max),
@err int
SELECT @stm = (
SELECT CONCAT(
'UPDATE ', OBJECT_NAME(c.OBJECT_ID),
' SET ',
c.name,
' = UPPER(',
c.name, '); ')
FROM sys.columns AS c
JOIN sys.types AS t ON c.user_type_id = t.user_type_id
WHERE t.name = 'varchar'
ORDER BY c.OBJECT_ID
FOR XML PATH('')
)
EXEC @err = sp_executesql @stm
IF @err = 0
PRINT 'OK'
ELSE
PRINT 'Error'