Я использую Base в LibreOffice 4.0 (все еще использую HSQL, который поставляется с Base, но смотрю на переход на HSQL 2.2.8), и я хотел бы сделать запрос, который запрашивает ввод параметров, например:

SELECT * FROM "Contacts" WHERE "FirstName" LIKE :FirstName

и когда вы запускаете запрос, появляется окно с запросом ввода параметров для «FirstName»

Проблема с этим в том, что мой текущий клиент, ну, в общем, ужасный орфограф, а для ввода параметров требуется точное совпадение, включая прописные.

Я пробовал несколько способов добавить подстановочный знак% в поиск параметров, и он не будет работать.

Я использовал SQL для создания подстановочного запроса (например, SELECT * FROM "Contacts" WHERE "FirstName" LIKE 'W%'), но, к сожалению, он требует, чтобы этот клиент входил в SQL для этого запроса и изменял буквы, которые он ищет, и снова это не вариант для моего клиента, который также не обладает достаточными знаниями в области SQL, баз данных или компьютеров.

Есть ли способ поместить поиск по шаблону в запрос, который производит ввод параметров? ИЛИ есть ли какой-нибудь макрос, который я могу запрограммировать (помогите, пожалуйста!) что сделает это для меня?

Примечание. Хотя поле записи поиска выполняет поиск совпадений в любом месте поля, это очень медленный метод поиска из-за большого количества контактов.

2 ответа2

0

Не тестировал на hsql 2.2, но работает на hsql 1.8. Возможно, вы могли бы использовать нечто подобное - возможно, придется изменить concat для работы с ||.

SELECT * FROM "Contacts" WHERE UPPER("FirstName") LIKE CONCAT(UPPER(:FIRSTNAME),'%')
0

https://help.libreoffice.org/Common/Find_Record#Wildcard_expression

Вы можете использовать vildcards:

? для одного символа подстановки

* для 0-n символов

?Гарри может быть Гарри или Барри

B * b может быть Боб или Бибоб

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .