1

以下:

select * from people where first_name in ('John', 'Jim');

会带上所有有 first_name 的人

  • 约翰
  • 约翰
  • 伊姆
  • 吉姆

以及各种这样的组合,因为查询是在不区分大小写的模式下运行的。

我怎样才能让它在区分大小写的模式下运行?

我试过了:

select * from people where first_name in binary ('John', 'Jim');

但它不起作用。

请不要告诉我更改列的排序规则。我希望根据用户的选择(区分大小写或不区分大小写)动态地进行此操作。

任何事物?

4

2 回答 2

2

尝试

select * from people 
where first_name COLLATE latin1_general_cs in ('John', 'Jim');
于 2012-04-19T08:09:03.413 回答
1

with 的想法binary很好,但是您将其应用于列名而不是搜索词。这样,索引将不会被使用。但是,您可以使用以下组合:

WHERE first_name in ('John','Jim') AND BINARY first_name in ('John','Jim')
于 2012-04-19T08:09:52.360 回答