- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Datenquelle Eintrag abfrage case insensitive
Hallo,
ich möchte mit FirstSpirit Integration (FSI) etwas in einer Datenquelle suchen. Dabei sollte Groß- und Kleinschreibung ignoriert werden.
In "normalem" SQL würde ich sowas in der Art wie "where tolower(name) like tolower(suchbegriff)" machen (richtige Syntax sei jetzt mal dahingestellt)
Wie mache ich das aber bei FSI?
<QUERY entityType="datenquellenname">
<LIKE attribute="name_DE" datatype="java.lang.String" value="<%=searchfor%>"/>
</QUERY>
"searchfor" ist der Suchbegriff, der bereits escaped und ggf. in Kleinbuchstaben daher kommt...z.B: "Test"
Datenquelle sieht in etwa so aus:
Test 1
Test 2
Test 3
Suchbegriff "Test" funktioniert, "test" nicht. (Oracle DB)
Die Hilfe und das Handbuch haben mich leider nicht weiter gebracht...
Vielen Dank und viele Grüße
Jannis
- Labels:
-
Developers
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ich kann doch nicht der erste sein, der in einer Datenbank was suchen möchte...wie habt Ihr es bei Euch implementiert?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Jannis,
die Frage hatte ich schon mal dem Helpdesk (2008) gestellt. Ich glaub aber auch, dass sich da nichts geändert hat:
> Gibt es in der o.g. Content-Select-Funktion so eine Einstellung?
> Beim "normalen SQL-Select" würde man ein "upper" oder "lower" in der Abfrage angeben.
absolut richtig. Doch in FirstSpirit implementierte Datenbankschnittstelle ist ja datenbankunabhängig. D.h. FirstSpirit gibt schon die Sortierung vor und leitet diese an die DB weiter, doch letztendlich liegt die Entscheidung der Sortierungsart bei der DB selbst. Unter Oracle kann man (meines Wissens nach) einstellen, dass diese bei der Sortierung per default zwischen Klein-/Großschreibung nicht unterscheidet. Eine andere Lösung/Workaround kann ich Ihnen hier (zumindest mit FS 4.0) leider nicht bieten.
Wenn es nicht gerade riesen Datenmengen sind, könnte man über alle Einträge iterieren (also kein <LIKE attribute..> angeben - was natürlich nicht performant ist) und dann selbst den test durchführen. Aber vieleicht hat noch jemand anderes eine hilfreiche Idee.
Grüße aus Dresden
Andreas
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Danke. Ja ich hab dann die "von Hand Methode" implementiert, damit es erstmal überhaupt geht - sprich "Datensatz so stark einschränken wie es geht und dann programmatisch prüfen ob das aktuell auszugebene Dokument dem Suchbegriff ähnelt..." Ich hoffe ja, dass da ein paar Cachingfunktionen im Hintergrund noch halbwegs annehmbare Performance leisten können....*seufz*
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Oracle sollte sich auch so konfigurieren lassen, dass Suchabfragen case-insensitive beantwortet werden.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
evftl. hilft folgendes weiter
http://www.dba-oracle.com/t_case_insensitive_indexes_searches.htm
create index
nlsci1_gen_person
on
MY_PERSON
(NLSSORT
(PERSON_LAST_NAME, 'NLS_SORT=BINARY_CI')
)
;
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo,
also unsere (bereits so konfigurierte) Oracle-DB liefert bei dem Statement "select * from table_name order by name asc" folgende Auflistung:
achim
Albert
Bruno
claus
dieter
In FS (R4) mit der Abfrage
<QUERY entityType="table_name">
<ORDERCRITERIA attribute="name" descending="0"/>
</QUERY>
Folgendes:
Albert
Bruno
achim
claus
dieter
Gibt es hier noch weitere Möglichkeiten, die Auflistung wie aus der DB zu erhalten? Vielleicht ein Attribut oder Flag? Denn anscheinend ändert ja FS die erhaltene List und gibt diese gruppiert nach Groß- und Kleinschreibung weiter bzw. aus.
Das ist ein Punkt, der unserem Kunden wichtig ist. Oder kann / soll dies als ChangeRequest diskutiert werden?
Danke vorab für eine Antwort,
Grüße aus Hamburg,
Matthias Przybylski
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
FirstSpirit selber sortiert nichts automatisch um, eventuell ist das eine Eigenschaft des JDBC-Treibers?
Ansonsten gibt es natürlich noch die Möglichkeit, im Template manuell zu sortieren.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Das manuelle Sortieren kann ich wohl ncith umsetzen, da es sich um eine Combobox in einem Eingabeformular handelt, welche auf eine andere Tabelle zugreift und für die Sortierung eine Abfrage nutzt.
Also wie folgt:
<CMS_INCLUDE_OPTIONS type="database">
<LABELS>
<LABEL lang="*">#item.name</LABEL>
</LABELS>
<QUERY name="data.sort_mytable"/>
<TABLE>data.mytable</TABLE>
</CMS_INCLUDE_OPTIONS>
Wir prüfen mal den Treiber...
Danke für den Tip!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo,
die manuelle Sortierung müsste aber auch funktionieren (ohne es jetzt getestet zu haben!) in dem sie einfach das QUERY-Tag erweitern
<QUERY name="data.sort_mytable">
<ORDERCRITERIA attribute="ATTRIBUT" descending="NUMERISCHER_BOOLESCHER_WERT" />
</QUERY>

