首页 > 解决方案 > 在 SQL Server 中按 ASCII 代码搜索文本以获取 ASCII 63

问题描述

我的表记录中有一个特殊的字符(其中很多)

就是这个字符◾</p>

当我尝试搜索包含此字符的记录时,出于某种原因,我得到了所有记录。

这是我的查询

SELECT TOP 100 * 
FROM X2 
where txt like N'%◾%'

我发现 ASCII = 63

我想知道是否有一种方法可以用 ASCII 码搜索文本?

我试过了,但没有记录

SELECT TOP 100 * 
FROM X2 
where txt like N'%' + char(63) + '%'

知道如何获得吗?

我正在使用 SQL Server 2019 (v15)

标签: sqlsql-server

解决方案


这是 SQL Server 如何进行 Unicode 比较的结果,简而言之,可以通过更改排序规则来解决,例如

declare @Test table (test nvarchar(max));

insert into @Test (test)
values (N'a◾b'), ('asd');

select *
from @Test
where Test like N'%◾%' COLLATE Latin1_General_100_CI_AI;

回报:

test
a◾b

修改排序规则以适应例如 CI(不区分大小写)<->(区分大小写)、AI(不区分重音)<-> AS(区分重音)。

有关完整说明,请参阅这篇文章


推荐阅读