diwaffm
Goto Top

Datenbankfeld nach dem längsten Teilstring durchsuchen

Ich habe hier eine Access-Tabelle mit Vereinsbezeichnungen

"MTG Mannheim"  
"Polizei SV Eutin"  
"Halstenbeker TV"  
 etc

Diese würde ich gerne per SQL-Abfrage durchsuchen, so dass die Anfangsposition des längsten Teilstrings in eine zweite Spalte geschrieben wird.

ICh habe nun schon versucht, die Anzahl der Leerzeichen zu bestimmen und darauf fußend die einzelnen Teilstrings zu bestimmen - allerdings schaffe ich das nicht für variable Anzahlen von Teilstrings...

Any hints?

Danke

Dirk

Content-Key: 135795

Url: https://administrator.de/contentid/135795

Ausgedruckt am: 29.03.2024 um 02:03 Uhr

Mitglied: bastla
bastla 12.02.2010 um 09:09:25 Uhr
Goto Top
Hallo diwaffm!

In SQL bin ich leider nicht so fit - aber da Du ja Access verwendest, ein Vorschlag als VBA-Function:
Function GetMaxSubStringLen(TheString As String) As Integer
Dim SubString As Variant, MaxLen As Integer, LenSub As Integer
For Each SubString In Split(TheString)
    LenSub = Len(SubString)
    If LenSub > MaxLen Then MaxLen = LenSub
Next
GetMaxSubStringLen = MaxLen
End Function
Wenn Du diesen Code in ein Modul setzt, sollte danach die Aktualisierung des Feldes "LMax" in der Tabelle "Vereine" etwa so gehen:
UPDATE Vereine SET Vereine.LMax = GetMaxSubStringLen([Vereinsname]);
Grüße
bastla
Mitglied: diwaffm
diwaffm 12.02.2010 um 09:23:38 Uhr
Goto Top
Ok - damit habe ich die Länge des längsten Teilstrings.
Muss mal ein wenig spielen, dass ich dann auch die Angangsposition dieses Teilstrings bekomme...

ciao

dirk
Mitglied: bastla
bastla 12.02.2010 um 09:32:31 Uhr
Goto Top
Hallo diwaffm!

Sorry - zu oberflächlich gelesen ... face-sad

Mit dieser Function sollte es dann klappen:
Function GetPosMaxSubString(TheString As String) As Integer
Dim SubString As Variant, MaxSubString As String, MaxLen As Integer, LenSub As Integer
For Each SubString In Split(TheString)
    LenSub = Len(SubString)
    If LenSub > MaxLen Then
        MaxLen = LenSub
        MaxSubString = SubString
    End If
Next
GetPosMaxSubString = InStr(TheString, MaxSubString)
End Function
Grüße
bastla
Mitglied: diwaffm
diwaffm 12.02.2010 um 09:35:03 Uhr
Goto Top
Genau - da bin ich eben auch gelandet...

Ciao und Danke

dirk