当前位置:  开发笔记 > 编程语言 > 正文

如何在SQL Server 2005表的NTEXT字段中找到Unicode /非ASCII字符?

如何解决《如何在SQLServer2005表的NTEXT字段中找到Unicode/非ASCII字符?》经验,为你挑选了2个好方法。

我有一个有几千行的表.描述和摘要字段是NTEXT,有时其中包含非ASCII字符.如何找到所有非ASCII字符的行?



1> 小智..:

我有时一直在使用这个"演员"声明找到"奇怪的"字符

select 
    *
from 
    
where 
     != cast( as varchar(1000))



2> Andomar..:

首先构建一个包含您不感兴趣的所有字符的字符串(该示例使用0x20 - 0x7F范围,或7位不带控制字符.)每个字符都以|为前缀,以便稍后在escape子句中使用.

-- Start with tab, line feed, carriage return
declare @str varchar(1024)
set @str = '|' + char(9) + '|' + char(10) + '|' + char(13)

-- Add all normal ASCII characters (32 -> 127)
declare @i int
set @i = 32
while @i <= 127
    begin
    -- Uses | to escape, could be any character
    set @str = @str + '|' + char(@i)
    set @i = @i + 1
    end

下一个代码段会搜索列表中没有的任何字符.%匹配0个或更多字符.[]匹配[]中的一个字符,例如[abc]将匹配a,b或c.^否定列表,例如[^ abc]将匹配不是a,b或c的任何内容.

select *
from yourtable
where yourfield like '%[^' + @str + ']%' escape '|'

转义字符是必需的,因为否则搜索像,]或_等字符会弄乱LIKE表达式.

希望这很有用,感谢JohnFX对另一个答案的评论.

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有