首页 > 解决方案 > 如何比较 IN 列表区分大小写

问题描述

该声明

SELECT * FROM table WHERE some_field IN ('abc', 'def', 'ghi')

忽略大小写,因此例如当 some_field 为 'ABC' 时也会找到记录。

不幸的是,在列表之后放置 aCOLLATE会产生语法错误。有谁知道如何在IN不更改数据库或单个字段的(不敏感)排序规则设置的情况下比较列表区分大小写?

标签: sql-servertsqlsql-server-2012

解决方案


您需要COLLATE在列名之后使用:

SELECT * FROM table 
WHERE some_field COLLATE <collation_name>_CS IN ('abc', 'def', 'ghi');

db<>小提琴演示


推荐阅读