Roy*_*ker 6 sql t-sql sql-server newline
我正在从我构建的系统中的一个错误中恢复,我没有考虑IE生成Windows风格的换行符(\ r \n)和其他浏览器在发布带有文本区域的HTML表单时生成Unix风格的换行符(\n) .现在我需要在SQL-Server数据库的varchar和nvarchar字段中将所有Windows样式的换行符(\ r \n)转换为Unix样式的换行符(\n).
有没有办法迭代T-SQL中的所有表/行,并将'\ r \n'的实例替换为'\n'为varchar和nvarchar字段?
编辑:我认为替换部分会是这样的
REPLACE(@fieldContents, CHAR(13)+CHAR(10), CHAR(10))
Run Code Online (Sandbox Code Playgroud)
困难的部分是在所有varchar和nvarchar字段中执行此操作.
像这样的东西?然后,您可以动态执行这些字符串,或者只是剪切/粘贴结果并在查询窗口中执行它们.
select 'update ' + sc.name + '.' + t.name + ' set ' + c.name + ' = replace(' + c.name + ', CHAR(13)+CHAR(10), CHAR(10))'
from sys.columns c
inner join sys.systypes st
on c.system_type_id = st.xtype
and CHARINDEX('varchar', st.name) <> 0
inner join sys.tables t
on c.object_id = t.object_id
inner join sys.schemas sc
on t.schema_id = sc.schema_id
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
23854 次 |
最近记录: |