sql-server – SQL Server – 删除所有不可打印的ASCII字符
发布时间:2020-05-23 05:26:54 所属栏目:MsSql 来源:互联网
导读:我们最近从SQL Server 2012迁移到SQL Server 2014,并且我们所有的FOR XML代码都开始抛出有关不可打印的ASCII字符的错误. 我写了这个可怕的函数来删除不可打印的ASCII字符作为快速修复.我想用更干净的东西代替它.有没有办法做到这一点? ALTER FUNCTION [dbo].
|
我们最近从SQL Server 2012迁移到SQL Server 2014,并且我们所有的FOR
XML代码都开始抛出有关不可打印的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)')
解决方法另外一个选项.此功能将替换控制字符并更正任何残留的重复空格.例如,简·史密斯{13}在这里将不会像简史密斯在这里那样被归还,而是珍·史密斯在这里 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)) 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 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 数据库 – 最佳事件采购数据库策略
- mysql的日期和时间函数大全
- sql – 在两个varchar字段上创建Unqiue不区分大小写的约束
- sql-server-2008 – T-SQL删除所有非alpha和非数字字符
- sql Server 2008 R2还原或删除数据库时总是出错的解决方法
- sql-server – 获取从星期一到星期日的当前工作日
- sql-server – 如何从sql server表中查看已删除的记录?
- sql-server – 使用SQL Server 2016系统版本化的时态表为慢
- SQL Server 2008设置DateTime变量
- MySQL里实现类似SPLIT的分割字符串的函数
