Чувствительный к регистру поисковый запрос с предложением IN - SQL Server - PullRequest
0 голосов
/ 23 мая 2019

Я хочу выполнить поиск с учетом регистра в среде SQL Server.Всякий раз, когда я использую отдельные запросы, как показано ниже, он работает нормально:

select * from table1 where flag = 'Yes' COLLATE sql_latin1_general_cp1_cs_as;
select * from table1 where flag = 'No' COLLATE sql_latin1_general_cp1_cs_as;

Но как добиться этой функциональности, когда я использую предложение IN, как показано ниже:

select * from table1 where flag in ('Yes', 'No'); //This is returning all the flag vlaues like Yes, YES, NO, No

Ответы [ 2 ]

3 голосов
/ 23 мая 2019

Так же, как вы сделали 2 примера, используйте COLLATE:

SELECT *
FROM table1
WHERE flag COLLATE sql_latin1_general_cp1_cs_as IN ('Yes', 'No');
1 голос
/ 23 мая 2019

Установите параметры сортировки столбцов правильно, и все готово - навсегда!

ALTER TABLE table1 ALTER COLUMN flag varchar(3) COLLATE sql_latin1_general_cp1_cs_as

Теперь вы можете просто сделать:

select * from table1 where flag = 'Yes';
select * from table1 where flag in ('Yes', 'No'); 
...