You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server 2019中LIKE处理尾随空格的疑问:为何两边带空格返回1?

为什么以下SQL查询的输出结果是'1'?

先看这段SQL代码:

IF 'SQL ' LIKE 'SQL '       
    SELECT '1'
ELSE                        
    SELECT '0'

它的输出是:

1

之前有个认知:在SQL Server中使用LIKE处理VARCHAR类型时,右侧模式的尾随空格是有效的,左侧匹配表达式的尾随空格会被忽略。按这个逻辑,左边的'SQL '应该被当成'SQL',和右边的'SQL '匹配时应该返回0,但实际结果却是1。

不过下面两种情况的结果符合预期:

IF 'SQL' LIKE 'SQL '        
    SELECT '1'
ELSE                        
    SELECT '0'
    
IF 'SQL ' LIKE 'SQL'        
    SELECT '1'
ELSE                        
    SELECT '0'

对应的输出:

0
    1

核心原因

问题出在SQL Server对LIKE操作的长度匹配规则上:

  • 当左右两边字符串的长度相等时,SQL Server会直接进行逐字符的精确匹配,不会忽略任何一边的尾随空格。'SQL '和'SQL '长度都是4,逐字符完全一致,所以匹配成功,返回1。
  • 当两边长度不等时,才会触发“忽略左侧尾随空格”的规则:
    • 'SQL'(长度3)和'SQL '(长度4):模式的尾随空格有效,短字符串无法匹配长模式,返回0。
    • 'SQL '(长度4)和'SQL'(长度3):左侧尾随空格被忽略后等同于'SQL',和模式匹配,返回1。

内容的提问来源于stack exchange,提问作者abhishek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 23:24:37