#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 "%" "'");