【发布时间】:2019-03-20 18:33:53
【问题描述】:
我在表TABLE中有以下内容
id content
-------------------------------------
1 Hellö world, I äm text
2 ènd there äré many more chars
3 that are speçial in my dat£base
我现在需要使用 bcp 将这些记录导出到 HTML 文件中:
set @command = 'bcp "select [content] from [TABLE] where [id] = ' +
@id queryout +' + @filename + '.html" -S ' + @instance +
' -c -U ' + @username + ' -P ' + @password"
exec xp_cmdshell @command, no_ouput
为了使输出看起来正确,我需要先将所有特殊字符替换为它们各自的 HTML 实体(伪)
insert into [#temp_html] ..
replace(replace([content], 'ö', 'ö'), 'ä', 'ä')
但现在,我已经嵌套了 30 个 replaces,而且它开始看起来很疯狂。
经过大量搜索,我找到了this post which uses a HTML conversion table,但它太高级了,我无法理解:
- 该表没有列出特殊字符本身,因为它们在我的文本中(
ö, à等),而是 UnicodeHex。我是否需要将它们添加到表格中才能进行我需要的转换? - 我无法理解如何更新我的脚本以替换所有特殊字符。有人可以给我看一个(伪)代码的 sn-p 吗?
【问题讨论】:
-
您可以以一种易于理解的方式制作一个简单的表格,其中包含源字符、目标字符等列,并运行一个循环(光标)来执行所有替换操作。这将使您的代码保持整洁,并完成工作。您也可以有 30 个更新行,而不是嵌套。这是你的眼睛糖果,你的规则。
-
这个答案可能会有所帮助:stackoverflow.com/a/49818394/9395740
-
@MJH 链接中的答案适用于单个字符串,我认为您不能对表格列使用相同的技术。
标签: sql-server tsql sql-server-2012 bcp