几天前我问了一个关于通过运行SELECT将数据移动到另一台服务器来创建INSERT的问题.这很有效,直到我遇到一个完整的HTML和撇号表.处理这个问题的最佳方法是什么?幸运的是没有太多的行,所以作为"复制和粘贴"的最后手段是可行的.但是,最终我需要这样做,那时候表格可能太大了,无法复制和粘贴这些HTML字段.
这就是我现在拥有的:
select 'Insert into userwidget ([Type],[UserName],[Title],[Description],[Data],[HtmlOutput],[DisplayOrder],[RealTime],[SubDisplayOrder]) VALUES ('
+ ISNULL('N'''+Convert(varchar(8000),Type)+'''','NULL') + ','
+ ISNULL('N'''+Convert(varchar(8000),Username)+'''','NULL') + ','
+ ISNULL('N'''+Convert(varchar(8000),Title)+'''','NULL') + ','
+ ISNULL('N'''+Convert(varchar(8000),Description)+'''','NULL') + ','
+ ISNULL('N'''+Convert(varchar(8000),Data)+'''','NULL') + ','
+ ISNULL('N'''+Convert(varchar(8000),HTMLOutput)+'''','NULL') + ','
+ ISNULL('N'''+Convert(varchar(8000),DisplayOrder)+'''','NULL') + ','
+ ISNULL('N'''+Convert(varchar(8000),RealTime)+'''','NULL') + ','
+ ISNULL('N'''+Convert(varchar(8000),SubDisplayOrder)+'''','NULL') + ')'
from userwidget
Run Code Online (Sandbox Code Playgroud)
除了HTMLOutput字段中那些讨厌的撇号之外,哪个工作正常.我可以通过在撇号上加倍查询来逃避它们,还是有一种编码字段结果的方法,这样无关紧要?
您可以用双撇号替换单撇号.
ISNULL('N'''+ REPLACE(Convert(varchar(8000),Type), '''', '''''') + '''','NULL') + ','
Run Code Online (Sandbox Code Playgroud)