• 0
walexw

Верхний регистр для кирилицы

Вопросы

БД SQLite
Для поиска записей по текстовым полям, для игнорирования регистра использую примерно такую конструкцию:
SELECT UPPER(city) FROM table1 WHERE id=1 OR id=100 (это запрос для примера, в реальном запросе UPPER стоит в WHERE)
в 1-й записи Paris, отрабатывает PARIS
в 100-й записи Париж, отрабатывает Париж (ни в верхний, ни в нижний регистр не переводится)
Как сделать, чтобы и англоязычное и русскоязычное заполнение стринговых полей обрабатывалось одинаково правильно?

Спасибо!
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 ответов на этот вопрос

  • 0
13 минут назад, walexw сказал:

БД SQLite
Для поиска записей по текстовым полям, для игнорирования регистра использую примерно такую конструкцию:
SELECT UPPER(city) FROM table1 WHERE id=1 OR id=100 (это запрос для примера, в реальном запросе UPPER стоит в WHERE)
в 1-й записи Paris, отрабатывает PARIS
в 100-й записи Париж, отрабатывает Париж (ни в верхний, ни в нижний регистр не переводится)
Как сделать, чтобы и англоязычное и русскоязычное заполнение стринговых полей обрабатывалось одинаково правильно?

Спасибо!

куда вы выгружаете данные?

для Delphi нужно использовать AnsiUpperCase

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Выполните этот запрос в консоли сервера, будет работать UPPER?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

На форуме уже обсуждалась подобная проблема: Зависимость от регистра русских символов при использовании LIKE

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 18.10.2016 в 19:44, Евгений Корепов сказал:

Выполните этот запрос в консоли сервера, будет работать UPPER?

В консоли та же песня. Английские буквы слушаются, русские без изменений.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
2 часа назад, walexw сказал:

В консоли та же песня. Английские буквы слушаются, русские без изменений.

Так и должно быть, sql сервер не знает что вы собираетесь хранить в таблице, какой язык именно будет использоваться для хранения, сортировки и т.п. Вы должны сами указать sql серверу как он должен обращаться с текстом. Для этого есть свойства Collation (ну и Character Set), обычно установить эти свойства можно глобально для сервера или конкретно для базы или таблицы. К сожалению не имел опыта работы именно с SQLite, но принцип везде один. При изменении этих свойств для наполненной данными таблицы будьте осторожны, с большой вероятностью русский язык переколбасит, так что сделайте бэкап.

Параметры можно установить конкретно для языка, к примеру "CharacterSet=cp1251 -- Windows Cyrillic" "Collation=cp1251_general_ci", или более универсально "CharacterSet=utf8 -- UTF8 Unicode" "Collation=utf8_general_ci" - русский язык должен работать корректно. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу