SQL Server - 删除所有不可打印的 ASCII 字符

2023-11-25

我们最近从 SQL Server 2012 迁移到 SQL Server 2014 以及我们所有的FOR XML代码开始抛出有关不可打印 ASCII 字符的错误。 我写了这个horrible函数删除不可打印的 ASCII 字符作为快速修复。我想用更干净的东西代替它。有没有办法做到这一点?

ALTER FUNCTION [dbo].[remove_non_printable_chars]
(@input_string nvarchar(max))
RETURNS nvarchar(max)
BEGIN
    RETURN
    REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
    REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
    REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
    REPLACE(REPLACE(@input_string,
        CHAR(1), ''),CHAR(2), ''),CHAR(3), ''),CHAR(4), ''),CHAR(5), ''),CHAR(6), ''),CHAR(7), ''),CHAR(8), ''),CHAR(9), ''),CHAR(10), ''),
        CHAR(11), ''),CHAR(12), ''),CHAR(13), ''),CHAR(14), ''),CHAR(15), ''),CHAR(16), ''),CHAR(17), ''),CHAR(18), ''),CHAR(19), ''),CHAR(20), ''),
        CHAR(21), ''),CHAR(22), ''),CHAR(23), ''),CHAR(24), ''),CHAR(25), ''),CHAR(26), ''),CHAR(27), ''),CHAR(28), ''),CHAR(29), ''),CHAR(30), ''),
        CHAR(31), ''), NCHAR(0) COLLATE Latin1_General_100_BIN2, '')
END

这是FOR XML损坏的代码。 (我没有写这个。它已经在代码库中了)。

SELECT @HTMLTableData =
(
    SELECT  HTMLRows 
    FROM (
        SELECT N'<tr>' + HTMLRow + N'</tr>' AS HTMLRows 
        FROM @HTMLRowData
    ) mi            
    FOR XML PATH(''), TYPE
).value('/', 'NVARCHAR(MAX)')

另外一个选择。

此函数将替换控制字符并纠正任何残留的重复空格。例如Jane Smith{13}was here不会被退回Jane Smithwas here, 反而Jane Smith was here

CREATE FUNCTION [dbo].[udf-Str-Strip-Control](@S varchar(max))
Returns varchar(max)
Begin
    ;with  cte1(N) As (Select 1 From (Values(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) N(N)),
           cte2(C) As (Select Top (32) Char(Row_Number() over (Order By (Select NULL))-1) From cte1 a,cte1 b)
    Select @S = Replace(@S,C,' ')
     From  cte2

    Return ltrim(rtrim(replace(replace(replace(@S,' ','†‡'),'‡†',''),'†‡',' ')))
End
--Select [dbo].[udf-Str-Strip-Control]('Michael        '+char(13)+char(10)+'LastName')  --Returns: Michael LastName
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL Server - 删除所有不可打印的 ASCII 字符 的相关文章

  • SQL 性能,使用 OPTION (FAST n)

    谁能告诉我在 SQL 查询中使用 OPTION FAST n 有什么缺点 比如我这么快就抓取了10万条记录 但这对SQL Server的其他进程有影响吗 我正在接近我的问题 我必须每周运行一次数据处理 因此 第一个结果会在 5 7 秒后出现
  • 将服务器添加到 SQL Management Studio

    我想将不同服务器上的一堆 SQL 2000 2005 的混合 服务器实例添加到我的 SSMS SQL Managment Studio 注册服务器 我正在遵循本教程here http sev17 com 2008 12 registerin
  • 查找 SQL Server 中表的 B 树高度

    由于数据库数据以B Tree的形式组织在8k页中 对于PK信息也是如此 数据库中的每个表都应该可以计算B Tree的高度 从而揭示达到某些数据需要多少次跳跃 由于行大小和 PK 大小都非常重要 因此很难计算 因为例如varchar 250
  • .net Framework 4.0 中地理 SQL Server 数据类型的 C# 等效项是什么?

    net web应用程序使用 net 4 0框架 我有一个存储过程 它接受 sql server 2008 R2 中的地理数据类型 我想将 C 代码中的数据插入 SQL Server 但我无法找到应在 C 中使用哪种与 SQL Server
  • LINQ to SQL:从位于不同服务器上的两个数据库获取记录

    我需要从两个不同的表中获取记录 数据库位于两个不同的 SQL Server 中 例如 销售数据库位于服务器 1 上 采购数据库位于服务器 2 上 销售和采购数据库都有一些表集 例如销售数据库中的 table1 和采购数据库中的 table2
  • T-SQL 中结果集的幂集(所有组合)

    我需要一个 t sql 代码来获取结果集的幂集 输入示例 ColumnName 1 2 3 Example Output one columns as nvarchar 1 2 3 1 2 1 3 2 3 1 2 3 输出集可能包含重复值
  • 查询链接服务器时登录失败

    我正在尝试在 SQL Server 中创建链接服务器 Create the link to server uranium EXEC master dbo sp addlinkedserver server N uranium srvprod
  • MSSQL:如何使用代码编写存储过程创建脚本?

    我正在尝试使用一个数据库中存在但另一个数据库中不存在的 information schema routines 查询存储过程定义列表 SELECT t1 Routine Definition FROM server1 MyDatabase
  • sql脚本变量默认值

    我有一个脚本文件 例如测试 sql 我想从另一个脚本调用它 比如 caller sql 在 sqlcmd 模式下使用 r test sql 这工作正常 但我想在 test sql 中使用脚本变量 当我从 caller sql 调用 test
  • SQL Server 标识列值从 0 而不是 1 开始

    我遇到了一个奇怪的情况 数据库中的某些表的 ID 从 0 开始 即使 TABLE CREATE 的 IDENTITY 1 1 也是如此 对于某些表来说是这样 但对于其他表则不然 它一直有效到今天 我尝试过重置身份列 DBCC CHECKID
  • 导入到 SQL Server 时忽略 Excel 文件中的列

    我有多个具有相同格式的 Excel 文件 我需要将它们导入 SQL Server 我当前遇到的问题是 有两个文本列我需要完全忽略 因为它们是自由文本 并且某些行的字符长度超出了服务器允许我导入的长度 这会导致截断错误 因为我的分析不需要这些
  • SQL Server中主键和唯一索引的区别[重复]

    这个问题在这里已经有答案了 我的公司目前正在重写我们最近获得的一个应用程序 我们选择使用 ASP net mvc4 来构建这个系统 并使用实体框架作为我们的 ORM 我们收购的公司的前任所有者非常坚定地要求我们使用他们的旧数据库 并且不对其
  • INFORMATION_SCHEMA 与 sysobjects

    在 SQL Server 中 INFORMATION SCHEMA 和 sysobjects 之间有什么区别 其中一个是否比另一个提供更多信息 或者它们通常用于不同的用途 sysobjects 与 sys objects 相同吗 如果不是
  • SQL Server:删除除系统数据库之外的所有数据库

    在 PowerShell 中 我使用以下代码删除所有非系统 SQL Server 数据库 invoke sqlcmd ServerInstance sqlInstanceName U sqlUser P sqlPass Query EXEC
  • .NET:SqlDataReader.Close 或 .Dispose 导致超时过期异常

    当尝试在 SqlDataReader 上调用 Close 或 Dispose 时 我收到超时过期异常 如果您有到 SQL Server 的 DbConnection 您可以使用以下命令自行重现它 String CRLF r n String
  • 如何在SQL Server数据库表列中存储图像[重复]

    这个问题在这里已经有答案了 我有一张名为FEMALE在我的数据库中 它有ID as Primary Key 它有一个Image column 我的问题是如何使用 SQL 查询存储图像 尝试一下 insert into tableName I
  • 如何在 SQL Server 中什么都不做[重复]

    这个问题在这里已经有答案了 可能的重复 T SQL 中的空语句 https stackoverflow com questions 3234871 empty statement in t sql 我怎样才能让它在 SQL Server 中
  • 从数据库配置中的连接字符串中删除 SSIS 密码

    我有一个 SSIS 包 它使用 SQL 服务器中的 SSIS 配置表来检索 OLE DB 连接管理器的连接字符串属性 问题是我还需要相同的连接字符串来调用使用实体框架的程序集 我尝试访问连接管理器连接字符串属性 但 SSIS 总是删除密码
  • 在存储过程结束时显式删除本地临时表有什么好处?

    考虑以下伪 T SQL 代码 由存储过程执行 CREATE TABLE localTable
  • sql查询中的truncate和delete命令有什么区别[重复]

    这个问题在这里已经有答案了 可能的重复 SQL中TRUNCATE和DELETE有什么区别 https stackoverflow com questions 139630 whats the difference between trunc

随机推荐

  • 如何使用应用内自定义键盘的按钮输入文本

    我制作了一个应用程序内自定义键盘 它取代了系统键盘 并在我点击内部时弹出UITextField 这是我的代码 class ViewController UIViewController var myCustomKeyboard UIView
  • 数据表过滤:linq 与过滤器?

    过滤内存对象 数据表 这样做之间有很大的不同吗 var t dt Select id 2 vs var g dt AsEnumerable Where f gt f id ToString 2 我假设DataTable Select需要更多
  • 在 3D 世界中渲染 2D 精灵?

    假设我有精灵的 png 如何在 OpenGL 中渲染 2D 精灵 将图像作为我想要实现的效果的示例 另外 我想在屏幕上覆盖武器 例如底部图像中的步枪 有谁知道我如何实现这两种效果 任何帮助是极大的赞赏 在 3D 术语中 这称为 广告牌 广告
  • 计算太阳位于地平线以下/之上 X 度的时间

    我想知道太阳在地平线以下 之上 X 度的时间是什么时候 例如 我想找到太阳位于地平线以下 19 75 度的时间 我认为这与函数中的最高点有关date sunrise date sunset但我不确定 提前致谢 收集您需要的日期的太阳星历数据
  • 当我运行 Angular 4 应用程序时,哪个文件首先运行该应用程序?

    我正在使用 Angular 4 我有一个问题 当我运行项目并使用 ngserve 时 项目中的哪个文件首先呈现 有很多文件 例如main ts angular cli json app module我不明白当我运行 ngserve 时发生了
  • 从 ElasticSearch 中的数组中删除元素/对象,然后进行匹配查询

    我在尝试从 elasticsearch 中的数组中删除元素 对象时遇到问题 这是索引的映射 example1 mappings doc properties locations type geo point postDate type da
  • 是什么 !! JavaScript 中的(不是 not)运算符?

    我看到一些代码似乎使用了我不认识的运算符 以两个感叹号的形式 如下所示 有人可以告诉我这个操作员是做什么的吗 我看到这个的背景是 this vertical vertical undefined vertical this vertical
  • 分析生产代码

    我正在考虑实现一些在生产服务器上分析代码的东西 并需要一些最佳实践建议 显然 分析所有请求是一个坏主意 因为会增加开销 因此我正在研究一些可以根据请求随机调用分析器的技术 类似于每 10 000 个请求 1 个配置文件 我知道有一种方法可以
  • 列元素上的 CSS 3 动画“变换:缩放”在 Chrome 上不起作用

    我在 Chrome v44 中遇到问题 我尝试使用 transform scale 1 1 放大列项中的图像 但动画不起作用 如果我尝试在 Firefox 上使用 效果很好 我认为问题是由于 chrome 造成的 但我想知道是否有人找到了解
  • 我如何中断正在执行 (*TCPListener) Accept 的 goroutine?

    我最近正在玩 go 并尝试创建一些服务器来响应 tcp 连接上的客户端 我的问题是如何干净地关闭服务器并中断当前在以下调用中 被阻止 的 go 例程 func TCPListener 接受吗 根据接受的文档 Accept实现Listener
  • 使用 Interface Builder 嵌套自定义类/XIB

    我会尽力使其简短 我编写了一个自定义类 它使用几个 IBOutlet 属性扩展 UIView 并且它有一个与之关联的 XIB 这些 IBOutlet 链接到该 XIB 然后我想学习该类 将其嵌入到其他 XIB 例如 表格单元格 中 然后让它
  • Apple 和私有 API

    既然众所周知 App Store 提交正在接受私有 API 的使用测试 我需要问一个问题 私有 API 到底是什么 以便我可以避免使用它们 私有 API 是未记录在 SDK 中的 API 例如 框架类可能声明一个不适合外部开发人员使用的方法
  • IonAuth - 似乎随机将我注销

    我正在使用 ionAuth 它似乎几乎随机地将我注销 我正在使用 Codeigniter v2 1 4 它登录得很好 但是 ionAuth 似乎会随机注销 有没有办法强制会话保持活动状态 直到我调用 ionAuth gt logout 函数
  • 如何在 keras 中创建可训练参数?

    感谢您查看我的问题 例如 最终的输出是两个矩阵A和B的和 如下所示 output keras layers add A B 现在 我想构建一个新参数 x 来更改输出 我想让新输出 Ax B 1 x x 是一个可训练参数在我的网络中 我应该怎
  • chrome 中的 kendo ui grid lrt css 中的错误

    chrome 中的 kendo ui grid rtl css 存在错误 如果您注意到 Telerik 站点中的示例 您可以看到此错误 http demos telerik com kendo ui web grid rtl html 当您
  • 术语“go”未被识别为 cmdlet、函数、脚本文件或可操作程序的名称

    跑完后 go run main go 我收到这个错误 go The term go is not recognized as the name of a cmdlet function script file or operable pro
  • 如何使用Fileupload读取文件内容

    是否可以使用 Fileupload 读取文件的内容 例如 我想将 XML 文件保存在 Database 中 用户使用 Fileupload 搜索该文件 然后单击按钮将文件内容保存在 Database 中 我尝试了这个但不起作用 string
  • 将 inputText 映射到 JSF 中的 Date 对象

    我对 JSF 很陌生 我正在尝试使用自定义日期选择器 使用 jquery 制作且无法使用日历组件 在 JSF inpuText 组件中获取日期 我想将此 inputText 映射到 bean 中的 Java Date 对象 最终将作为 Da
  • 如何在存储过程的t-sql动态语句中使用LIKE?

    我尝试将 LIKE 关键字与包裹参数的 通配符一起使用 但我不确定如何在不破坏语句的情况下将 字符放入语句中 现在我有 SET SQLQuery SELECT FROM tblApps WHERE firstName LIKE search
  • SQL Server - 删除所有不可打印的 ASCII 字符

    我们最近从 SQL Server 2012 迁移到 SQL Server 2014 以及我们所有的FOR XML代码开始抛出有关不可打印 ASCII 字符的错误 我写了这个horrible函数删除不可打印的 ASCII 字符作为快速修复 我