2013-08-08 4 views
1

У меня есть столбец с именем Cities, этот столбец содержит данные, как следующее:выбрать только те слова, которые капитализируются

City 1 
CITY 1   
CITY 1 

Я хочу выбрать только CITY (Капитализированный)

Это не делает работа:

SELECT * FROM Location 
WHERE Cities LIKE 'CITY 1' 

Это дает мне все CITY 1 включает City 1

+2

Возможный дубликат [Найти символы верхнего регистра в поле базы данных SQL Server] (http://stackoverflow.com/questions/8160476/locate-upper-case-characters-in-sql-server-database-field) –

ответ

9

По умолчанию SQL Server будет использовать регистр, нечувствительный к регистру.

SELECT * 
FROM Location 
WHERE Cities LIKE 'CITY 1' 
COLLATE Latin1_General_CS_AI 

Марк ваш оператор сравнения с учетом регистра комплектовке применить чувствительную к фильтру

1

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

SELECT * FROM Location WHERE Cities LIKE 'CITY 1' COLLATE <Insert case sensitive collation here> 

e.g.

SELECT * FROM Location WHERE Cities LIKE 'CITY 1' COLLATE Latin1_General_CS_AI 
0

Решение:

Select * From Location Where Cities=BINARY UPPER(Cities); 
0

Try:

SELECT * 
FROM Location 
WHERE Cities COLLATE Latin1_General_CS_AS = 'CITY 1' 
0

Попробуйте этот запрос.

SELECT * 
FROM Location 
WHERE Cities LIKE 'CITY 1' 
COLLATE Latin1_General_CS_AS; 

В подборке делается запрос чувствительного к регистру «CS» и чувствительного к акценту «AS». Latin1 определяет английский среди многих других языков.

+0

(Изменить) Правда, хотя нет смысла использовать 'like' без шаблона. Просто используйте '='. Кроме того, это уже было предложено несколько раз. Так что нет необходимости публиковать его снова :) – Leigh

Смежные вопросы