Autor Beitrag
bockwurst
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 191

win98 /XP
D1 D5 Prof DE2005PE
BeitragVerfasst: Fr 13.07.07 11:54 
Hallo zusammen,

ich habe eine Paradox-Datenbank (ARTIKEL.DB). In dieser Datenbank gibt es ein Blob-Feld(Memo) mit dem Namen ARTIKELTEXT.

Nun möchte ich die ganze Datenbank per SQL nach einem SUCHWORT, in diesem Feld ARTIKELTEXT, suchen. Dabei soll nicht zwischen Groß- und Kleinschreibung unterschieden werden.

Das suchwort wurde vorher schon in Großbuchstaben konvertiert.

Versuche ich es mit

SELECT * FROM ARTIKEL A
WHERE UPPER(A.ARTIKELTEXT) LIKE '%SUCHWORT%'

kommt eine Fehlermeldung:
DB-ERROR 11871
Keine Übereinstimmung der Typen im Ausdruck.

Lasse ich das Upper weg -> funkt es. Allerdings muß ich dann die Groß/kleinschreibung beachten.

Kann mir einer eine Lösung sagen.
Bernhard Geyer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 721
Erhaltene Danke: 3



BeitragVerfasst: Fr 13.07.07 13:16 
Memofelder unterstützen nicht alle Features von "normalen" Stringfeldern. Und bei Paradox könnte das für das Upper gelten
bockwurst Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 191

win98 /XP
D1 D5 Prof DE2005PE
BeitragVerfasst: Fr 13.07.07 15:47 
Titel: @Bernhard Geyer
Vielen Dank Bernhard,

in der Hilfe steht, daß UPPER bei BLOB/MEMO nicht funkt. Es steht aber nicht, was ich sonst machen soll?

Es muß doch eine SQL-Möglichkeit geben, die dies schnell macht.

Wie macht ihr den das?
Bernhard Geyer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 721
Erhaltene Danke: 3



BeitragVerfasst: Sa 14.07.07 14:57 
Nicht bei Paradox - Da bist du entgültig am Ende der Möglichkeiten angelangt.
Du könntest höchstens selbst ein Zusätzliches Feld anlegen, indem die Daten entsprechend "geuppert" drin stehen.

Andere (vernünftige, richtige) DB's bieten sowas wie Volltextindex an.
bockwurst Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 191

win98 /XP
D1 D5 Prof DE2005PE
BeitragVerfasst: Mo 16.07.07 08:24 
Titel: Vielen Dank Bernhard Geyer
Vielen Dank Bernhard Geyer für Deine Antworten. Du hast mich fast überzeugt. Allerdings 100% glaube ich Dir noch nicht. Ich hoffe immer noch auf eine Lösung. Evtl. muß ich mir mal den "UPPER"-Quellcode anschauen.

Aber mit Delphi 1 (16bit) kann ich richtig suchen!! D.h. ich kann ins Memos groß und kleingeschriebene Suchwörter finden.


Andreas Orban
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mo 16.07.07 08:50 
Du hast 2 Möglichkeiten: Selber ein Patch für die BDe schreiben, welche Features, die bei anderen DBMS standard sind selber nachzuliefern oder gleich ein anderes DBMS verwenden welches zudem performanter ist, weniger Probleme mit multiuser-Zugriff macht, Transaktionen beherrscht usw.

_________________
Markus Kinzler.
bockwurst Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 191

win98 /XP
D1 D5 Prof DE2005PE
BeitragVerfasst: Mo 16.07.07 09:49 
Titel: containing
Mit

SELECT * FROM tabelle WHERE blobfeld CONTAINING 'TEXT'

suche ich einen Teilstring (im Blob/Memo) suchen können. Allerdings gibt es keine Hilfe über "containing" und bei oben dem Text kommt nur eine Fehlermeldung. Aber "containing" ist eine reserviiertes Wort in localSQL.

Kann mir einer sagen, wie ich es(containing) richtig benutzen kann.

danke

Andreas Orban