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

SQL Server查询LOWER(Zipcode)<>UPPER(Zipcode)无结果,求排查

问题原因及解决办法

核心原因

问题出在数据库的**排序规则(Collation)**设置上:

  • 如果你的Zipcode列使用了**不区分大小写(Case Insensitive,简称CI)**的排序规则,数据库在执行字符串比较时会忽略大小写差异。
  • 哪怕你单独查询能看到LOWER(Zipcode)和UPPER(Zipcode)返回的字符外观不同,但在<>比较时,数据库会按照排序规则判定二者相等,因此不会返回任何结果。

验证方式

先确认Zipcode列的排序规则,执行以下查询:

SELECT COLUMN_NAME, COLLATION_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'Addresses' AND COLUMN_NAME = 'Zipcode'

如果返回的COLLATION_NAME包含CI(比如SQL_Latin1_General_CP1_CI_AS),就说明是不区分大小写的排序规则导致的问题。

解决方法

方法1:强制区分大小写的比较

在比较时指定区分大小写的排序规则(CS代表Case Sensitive):

SELECT ID, Zipcode
FROM Addresses
WHERE LOWER(Zipcode) COLLATE SQL_Latin1_General_CP1_CS_AS <> UPPER(Zipcode) COLLATE SQL_Latin1_General_CP1_CS_AS

方法2:直接匹配小写字符

用通配符直接筛选包含小写字母的记录(需指定区分大小写排序规则):

-- SQL Server 示例
SELECT ID, Zipcode
FROM Addresses
WHERE Zipcode LIKE '%[a-z]%' COLLATE SQL_Latin1_General_CP1_CS_AS

内容的提问来源于stack exchange,提问作者Stefan van Roosmalen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 05:12:07