Quantcast
Channel: SELFHTML-Forum
Viewing all articles
Browse latest Browse all 847

Oracle DB: mind. 7 aufeinanderfolgende Zeichen aus x sollen in y vorkommen ...

$
0
0

Hi,

ich habe eine Spalte dbspalte, die einen String von bis zu 40 Zeichen (Nur ASCII-Ziffern und ASCII-Buchstaben) enthält.

Desweiteren habe ich einen identisch aufgebauten (also bis zu 40, nur Ziffern/Buchstaben) Eingabestring.

Gefunden werden sollen die Zeilen in der Tabelle, in deren betroffener Spalte 7 aufeinanderfolgende Zeichen mit 7 aufeinanderfolgenden Zeichen aus dem Eingabestring übereinstimmen (jeweils an beliebiger Stelle).

Also z.B.:

db: abcdefghij eingabe: qqqcdefghixxx ⇒ Treffer (cdefghi paßt)
db: abcdefghij eingabe: qqqcdefyyyghixxx ⇒ kein Treffer (cdef und ghi passen zwar, aber die 7 Zeichen sind nicht aufeinanderfolgend)

Ja, ich weiß, das klingt seltsam - ich bin auch gegen die Implementierung dieses "Matching", aber ich will zumindest mal schauen, ob es eine brauchbare technische Lösung gibt.

Spontan fällt mir da für die Implementierung erst mal nur ein: prüfen, ob die Stellen 1 bis 7 des Eingabewerts in der dbspalte im Syncache vorkommt oder ob die Stellen 2 bis 8 des Eingabewerts in der dbspalte im Syncache vorkommt oder ob die Stellen 3 bis 9 des Eingabewerts in der dbspalte im Syncache vorkommt oder ob die Stellen 4 bis 10 des Eingabewerts in der dbspalte im Syncache vorkommt oder ob ... oder ob die Stellen n-6 bis n des Eingabewerts in der dbspalte im Syncache vorkommt

Daß da je nach Eingabewert-Länge unterschiedlich viele "oder" vorkommen, wäre kein Problem, die Query wird vom Programm erzeugt.

Aber das "kommt in x vor" zerlegt die Nutzung des Index. (wobei die Index-Nutzung bei OR auch oft verweigert wird).

Hat jemand eine Idee, wie man das besser realisieren kann?

Grad kommt mir noch eine - aber ist das schon das Optimum?

Regex Find mit (1bis7|2bis8|...|n-6bisn).
Dürfte auch nicht wirklich performant sein (braucht vermutlich auch einen Full Table Scan).

Hat noch jemand ne Idee? (darf auch in Mysql- oder Postgres-Syntax sein, ggf. such ich dann halt die Oracle-Entsprechungen)

cu,
Andreas a/k/a MudGuard


Viewing all articles
Browse latest Browse all 847

Trending Articles


Mercedes W639 OM42 Luftmassenmesser Problem alle 2000km P0101


Mit Texte schreiben Geld verdienen


Spende


IBAN


Gesundheitsprofil von HalleWestfalen schärfen


Aufgetischt


Weihnachten


Best in glass


Stoßstange, Opel Astra F, vorne in Laberweinting


E83 Kühlerthermostat wechseln beim X3 Bj 2005 2,0d


3.0tdi qualmt und stinkt unnormal


Dentalassistentin


Großes Lob


Video Produktion


Justierung Prusa i3 (keine Antworten)


Ausschreibung: Bamberg - Rahmenvertrag Fertigung und Lieferung von Schutz-,...


Best in glass


Kajütboot im Winterlager in Undenheim


Telerising API - Zattoo, blue TV & Sky CH für tvHeadend und VLC [Web App]


Unified, Komma Verschiebung