Запрос для маленькой / заглавной буквы в PostgreSQL и SQLITE3

#python #postgresql #sqlite #tkinter

#python #postgresql #sqlite #tkinter

Вопрос:

Как я могу выбрать запись из базы данных независимо от того, какой регистр букв используется пользователем в tkinter, маленький или заглавный? В MySQL я использовал ДВОИЧНЫЙ файл, но как насчет PostgreSQL и SQLITE?

Комментарии:

1. Итак, вы хотите, чтобы код python выполнял запрос к базе данных, в котором вы выбираете записи, используя одну букву, которая может быть строчной или прописной в PostgreSQL или SQLITE?

Ответ №1:

В MySQL параметры сортировки по умолчанию не зависят от регистра. В SQLite это двоичный файл. И в PostgreSQL по умолчанию используется параметр сортировки, определенный операционной системой для локали.

Вы можете принудительно установить соответствие без учета регистра, используя lower :

 select a from f where lower(a) = lower('myString')
  

В PostgreSQL вы также можете использовать тип данных без учета регистра для столбца типа citext

 create table a (f citext);
  

Другим вариантом является использование ilike , которое игнорирует регистр. (Обратите внимание, что специальные символы должны быть экранированы с помощью ilike , если вы хотите буквального соответствия.)

 select f from a where f ilike 'myString';
  

В SQLite вы можете использовать директиву collate nocase в определении столбца.

 create table a (f text collate nocase);
  

Или в запросе:

 select f from a where f = 'myString` collate nocase;
  

Комментарии:

1. Спасибо за вашу помощь!