Kann eine Platzhaltersuche in einer Parameterabfrage in LibreOffice Base eingegeben werden?

1876
user2088009

Ich verwende Base in LibreOffice 4.0 (verwendet immer noch das mit Base gelieferte HSQL, möchte aber auf HSQL 2.2.8 umsteigen), und ich möchte eine Abfrage durchführen, die nach einer Parameter-Eingabe fragt:

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

und wenn Sie die Abfrage ausführen, erscheint ein Fenster, in dem Sie nach Ihrer Parametereingabe für 'FirstName' gefragt werden.

Das Problem bei diesem ist, dass mein aktueller Kunde ein schrecklicher Speller ist und die Parametereingabe eine exakte Übereinstimmung erfordert, einschließlich Großbuchstaben.

Ich habe mehrere Möglichkeiten ausprobiert, um das Platzhalter-Symbol% ​​zur Parametersuche hinzuzufügen. Es funktioniert nicht.

Ich habe SQL verwendet, um eine Wildcard-Abfrage zu erstellen (z. B. SELECT * FROM "Contacts" WHERE "FirstName" LIKE 'W%'), aber leider muss dieser Client in die SQL-Abfrage einsteigen und die Buchstaben ändern, nach denen er sucht. Dies wiederum ist keine Option für meinen Client, der sich auch nicht mit SQL auskennt Datenbanken oder Computer für diese Angelegenheit.

Gibt es eine Möglichkeit, eine Platzhaltersuche in eine Abfrage einzufügen, die eine Parametereingabe erzeugt? ODER gibt es ein Makro, das ich programmieren kann (helfen Sie bitte!), Das dies für mich tun wird?

Hinweis: Während das Suchdatensatzfeld an einer beliebigen Stelle im Feld nach Übereinstimmungen sucht, ist dies aufgrund der großen Anzahl von Kontakten eine sehr langsame Suchmethode.

0

2 Antworten auf die Frage

0
Gjordis

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

Sie können Vildcards verwenden:

? für ein einzelnes Platzhaltersymbol

* für 0-n-Symbole

Arry kann Harry oder Barry sein

B * b kann Bob oder Bebob sein

0
W_Whalley

Haven't tested on hsql 2.2, but this works on hsql 1.8. Perhaps you could use something similar--may have to change the concat to work with ||.

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