Поиск без учета регистра в Java DB (Derby)

#jdbc #derby #javadb

#jdbc #derby #javadb

Вопрос:

Я использую Derby и не могу найти способ выполнить поиск без учета регистра.

Например, у меня есть таблица, которую я ищу, которая содержит «Hello», но я ввел поисковый запрос для «hello», и на данный момент я не получу результата, но я хочу.

Я не могу найти правильный синтаксис для этого.

Сара

Ответ №1:

Вы можете использовать SQL-функции UPPER() или LOWER () как для вашего аргумента поиска, так и для поля, как в

 SELECT *
FROM   mytab
WHERE  UPPER(lastname) = UPPER('McDonalds')
  

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

1. но при этом игнорируется индекс, вероятно, установленный для столбцов?!

Ответ №2:

Наиболее распространенный способ сделать это — использовать сгенерированные столбцы. Вот хорошая статья от одного из разработчиков Derby:http://blogs.oracle.com/kah/entry/derby_10_5_preview_generated

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

1. Хорошая находка! не уверен, каков прирост производительности, хотя в отличие от простого верхнего значения поискового запроса

2. Здесь была бы полезна ссылка получше. Теперь эта ссылка ведет меня на главную страницу, и поиск страницы ее не нашел.

3. Извините, этой записи в блоге около 10 лет, и, похоже, Oracle удалила ее. 🙁 Пока вы все еще можете найти ее здесь: bigip-blogs-cms-adc.oracle.com/kah/entry/… Или попробуйте использовать archive.org чтобы получить доступ к странице, какой она была в 2009 году…

Ответ №3:

Это действительно поздний ответ, и я не уверен, что это лучший способ управлять процессом выполнения поиска без учета регистра в текстовой области в базе данных Derby
Мы добавили результаты нашего поиска в TableView, поэтому, если вы получите два результата, то у пользователя есть, по крайней мере, возможность решить, какой результат имеет значение.

     String upper = "BIG";
    String lower = "big";
    ResultSet rs = stmnt.executeQuery("SELECT * FROM Child WHERE cEntry LIKE 
    '" "%" upper "%" "'OR cEntry LIKE'" "%" lower "%" "'");