sql - 在 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)
解决方案
这是 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(区分重音)。
有关完整说明,请参阅这篇文章。
推荐阅读
- ios - 如何在目标中正确关闭和调用键盘 - C
- java - 无法从命令行运行 TestNG
- reactjs - 在使用路由的 ReactJs 中,如何在不位于 URL 中的情况下传递隐藏参数?
- java - 注入实现相同接口的bean列表
- javascript - 谷歌地图绘图中的错误?
- laravel - 使用 XAMPP 和 Laravel 时 iframe 拒绝连接
- c# - 我可以在 Entity Framework Core 中使用原始 T-SQL 命令来初始化数据库吗?
- sql - 想要将第二个查询的列连接到第一个查询,但出现“查询块的结果列数不正确”等错误
- html - 如何在css angular中制作旋转动画
- javascript - 无法在节点 js 中使用 Request 或 Axios 发布文件