首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找到表中的特殊字符并将其删除

找到表中的特殊字符并将其删除
EN

Stack Overflow用户
提问于 2017-04-10 20:19:56
回答 2查看 460关注 0票数 1

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

示例:

这是文字(我粘贴了图片,因为文字在文本版本中不可见)

代码语言:javascript
复制
enominazione AOC. I vini di b

我使用ASCII()函数得到了这个字符的ASCII码,它返回了11

问题是当我执行这个查询时:

代码语言:javascript
复制
DECLARE @specharfilter NVARCHAR(10) = CHAR(11);
SELECT * FROM My_Table WHERE [Text] like N'%' + @specharfilter + N'%' 

我没有得到任何结果。另一方面,当我尝试另一个像70这样的ascii代码时,我得到了结果。

那么我到底做错了什么呢?谢谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2017-04-10 20:26:05

您可以像这样使用PATINDEX()

代码语言:javascript
复制
SELECT * FROM My_Table 
WHERE PATINDEX('%[^0-9][^a-z][^A-Z]%',Col1) > 0
票数 3
EN

Stack Overflow用户

发布于 2017-04-10 22:56:22

如果对UDF感兴趣,下面的函数将从字符串中剥离控制字符,而不是连接单词。

示例:

代码语言:javascript
复制
Select [dbo].[udf-Str-Strip-Control]('Michael        '+char(13)+char(10)+'LastName') 

返回

代码语言:javascript
复制
Michael LastName   -- << No CRLF or extra spaces and 

如果感兴趣,则对该UDF执行。

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43322992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档