Подтвердить что ты не робот

Как найти строки, которые имеют значение, содержащее строчную букву

Я ищу SQL-запрос, который дает мне все строки, где ColumnX содержит любую строчную букву (например, "1234aaaa5789" ). То же самое для прописных букв.

4b9b3361

Ответ 1

SELECT * FROM my_table 
WHERE UPPER(some_field) != some_field

Это должно работать со смешными персонажами, такими как åäöøüæï. Возможно, вам понадобится использовать настройку utf-8 для конкретной таблицы.

Ответ 2

SELECT * FROM my_table WHERE my_column = 'my string'
COLLATE Latin1_General_CS_AS

Это сделает поиск с учетом регистра.


ИЗМЕНИТЬ

Как указано в kouton здесь комментарий и tormuto здесь, кто сталкивается с проблемой с приведенной ниже сортировкой

COLLATE Latin1_General_CS_AS

должен сначала проверить сопоставление по умолчанию для своего SQL-сервера, их соответствующей базы данных и соответствующей колонки; и передать в настройках по умолчанию выражение запроса. Список сопоставлений можно найти здесь.

Ответ 3

SELECT * FROM Yourtable 
WHERE UPPER([column_NAME]) COLLATE Latin1_General_CS_AS !=[Column_NAME]

Ответ 4

для поиска всех строк в нижнем регистре

SELECT *
FROM Test
WHERE col1 
LIKE '%[abcdefghijklmnopqrstuvwxyz]%'
collate Latin1_General_CS_AS

Спасибо Manesh Joseph

Ответ 5

В MS SQL сервере используйте предложение COLLATE.

SELECT Column1
FROM Table1
WHERE Column1 COLLATE Latin1_General_CS_AS = 'casesearch'

Добавление COLLATE Latin1_General_CS_AS делает поиск чувствительным к регистру.

SQL_Latin1_General_CP1_CI_AS сортировки по умолчанию для SQL Server SQL_Latin1_General_CP1_CI_AS не чувствительны к регистру.

Чтобы изменить параметры сортировки любого столбца для любой таблицы, выполните следующий запрос.

ALTER TABLE Table1
ALTER COLUMN Column1 VARCHAR(20)
COLLATE Latin1_General_CS_AS

Чтобы узнать параметры сортировки столбца для любой таблицы, выполните следующую хранимую процедуру.

EXEC sp_help DatabaseName

Источник: SQL SERVER - Сортировка - Чувствительный к регистру поиск SQL-запросов

Ответ 6

mysql> SELECT '1234aaaa578' REGEXP '^[a-z]';

Ответ 7

Вот как я это сделал для таблицы в кодировке utf8 и столбца utf8_unicode_ci, который, похоже, не был опубликован точно:

SELECT *
FROM table
WHERE UPPER(column) != BINARY(column)

Ответ 8

Я не эксперт по MySQL, я бы предложил вам посмотреть REGEXP.

SELECT * FROM MyTable WHERE ColumnX REGEXP '^[a-z]';

Ответ 9

В Posgresql вы можете использовать ~

Например, вы можете искать все строки с col_a с любой буквой в нижнем регистре

select * from your_table where col_a '[a-z]';

Вы можете изменить выражение Regex в соответствии с вашими потребностями.

Привет,

Ответ 10

- для Sql

SELECT *
FROM tablename
WHERE tablecolumnname LIKE '%[a-z]%';

Ответ 11

Мне нужно добавить BINARY в ColumnX, чтобы получить результат как с учетом регистра

SELECT * FROM MyTable WHERE BINARY(ColumnX) REGEXP '^[a-z]';

Ответ 12

Я сделал что-то вроде этого, чтобы узнать строчные буквы.

SELECT *
FROM YourTable
  where BINARY_CHECKSUM(lower(ColumnName)) = BINARY_CHECKSUM(ColumnName)