我有一个表,其中包含我想要删除的特殊字符。
示例:

这是文字(我粘贴了图片,因为文字在文本版本中不可见)
enominazione AOC. I vini di b我使用ASCII()函数得到了这个字符的ASCII码,它返回了11。
问题是当我执行这个查询时:
DECLARE @specharfilter NVARCHAR(10) = CHAR(11);
SELECT * FROM My_Table WHERE [Text] like N'%' + @specharfilter + N'%' 我没有得到任何结果。另一方面,当我尝试另一个像70这样的ascii代码时,我得到了结果。
那么我到底做错了什么呢?谢谢你的帮助。
发布于 2017-04-10 20:26:05
您可以像这样使用PATINDEX()
SELECT * FROM My_Table
WHERE PATINDEX('%[^0-9][^a-z][^A-Z]%',Col1) > 0发布于 2017-04-10 22:56:22
如果对UDF感兴趣,下面的函数将从字符串中剥离控制字符,而不是连接单词。
示例:
Select [dbo].[udf-Str-Strip-Control]('Michael '+char(13)+char(10)+'LastName') 返回
Michael LastName -- << No CRLF or extra spaces and 如果感兴趣,则对该UDF执行。
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,' ','><'),'<>',''),'><',' ')))
Endhttps://stackoverflow.com/questions/43322992
复制相似问题