阅文时长

| 0.28分钟

字数统计

| 456.8字符

主要内容

| 1、引言&背景 2、情景还原&解决方案 3、声明与参考资料

『MSSQL·WHERE过滤含空格字符串的坑』

编写人

| SCscHero

编写时间

| 2022/1/18 PM8:14

文章类型

| 系列

完成度

| 已完成

座右铭

每一个伟大的事业,都有一个微不足道的开始。

一、引言&背景   完成度:100%

a) 应对问题

使用MSSQL,使用WHERE关键字过滤"末尾含空格字符串"和"末尾不含空格的字符串"时,返回了相同的结果集。

b) 应用场景

  • WHERE关键字过滤"末尾含空格字符串"和"末尾不含空格的字符串"时。

c) 分析思路

个人理解是由于WHERE过滤的字符串做了Trim空格的处理。

二、情景还原&解决方案   完成度:100%

a) 情景还原

SELECT COUNT(1) FROM TestTable   WHERE  testField = 'X' COLLATE Chinese_PRC_CS_AS --WHERE筛选不带空格:结果错误
SELECT COUNT(1) FROM TestTable WHERE testField = 'X ' COLLATE Chinese_PRC_CS_AS --WHERE筛选带空格:结果错误

SELECT COUNT(1) FROM TestTable WHERE testField LIKE 'X' COLLATE Chinese_PRC_CS_AS --LIKE筛选不带空格:结果正确
SELECT COUNT(1) FROM TestTable WHERE testField LIKE 'X ' COLLATE Chinese_PRC_CS_AS --LIKE筛选带空格:结果正确




MSSQL·WHERE过滤含空格字符串的坑_解决方案


b) 解决方案

使用LIKE代替WHERE做筛选。

三、声明与参考资料   完成度:100%

原创博文,未经许可请勿转载。

如有帮助,欢迎点赞、收藏、关注。如有问题,请评论留言!