Я изначально думал, что это тривиально. Затем подумал, что «двоичный» может это сделать. Я не уверен в этом.
Name
----
John
MARY
Kin
TED
Я хотел бы запросить только MARY и TED, которые написаны в верхнем регистре. Как мне это запросить?
Я изначально думал, что это тривиально. Затем подумал, что «двоичный» может это сделать. Я не уверен в этом.
Name
----
John
MARY
Kin
TED
Я хотел бы запросить только MARY и TED, которые написаны в верхнем регистре. Как мне это запросить?
Если ваша сортировка нечувствительна к регистру, вам нужно использовать сравнение BINARY
:
SELECT *
FROM yourtable
WHERE Name = BINARY UPPER(Name)
Посмотрите, как это работает онлайн: sqlfiddle
Вы просто используете функцию UPPER() на поле Name
и сравните результаты с исходным значением Name
:
select Name from Table where Name = UPPER(Name)
Сюда
UPPER(Name) || Name
---------------------------------------
JOHN != John
MARY == MARY
KIN != Kin
TED == TED
будут возвращены только те строки, которые вам нужны.
Как прокомментировал здесь @mdoyle, вы должны определить столбец с правильным сопоставлением (с учетом регистра), в противном случае, поскольку другие ответили, вам понадобится BINARY для сравнения столбцов без учета регистра.
Попробуй это:
select name from table where name=upper(name);
Попробуй это:
SELECT Name
FROM table
WHERE Name COLLATE latin1_general_cs LIKE UPPER(Name)
;
Используйте ниже:
SELECT name FROM table WHERE name = BINARY UPPER(column_name);
Это также вернет числовые значения, но это не проблема для имени вашего столбца.
SELECT * FROM names WHERE
ASCII(name) = ASCII(Upper(name))