Feedback

VB - Einfache Ähnlichkeitssuche (SQL)

Veröffentlicht von am 27.07.2009
(2 Bewertungen)
Mit dieser Funktion kann eine einfache Ähnlichkeitssuche realisiert werden. Die Funktion ersetzt Sonderzeichen durch % und fügt ein % zwischen Ziffern und Buchstaben ein. Wenn sich der Anwender (z.B. bei einer Produktbezeichnung) vertippt, bekommt er mit größerer Wahrscheinlichkeit trotzdem das richtige Ergebnis.

Übergib der Funktion den String der in deiner SLQ-Anweisung hinter WHERE steht. Z.B. übergibts du "gr.Produkt0815" dann gibt die die Funktion zurück: "gr%Produkt%0815" und findet dann bei der Abfrage auch das gewünschte "Großes Produkt-Art-0815" in der Datenbank ;-)
GFU-Schulungen  [Anzeige]

VB.NET 2017/2015/2013 Aufbau

Nach dieser Schulung können Sie mittels objektorientierter Modelle in VB.NET 2017/2015/2013 wiederverwendbare Elemente eigenständig erstellen.

ASP.NET Core und Angular Komplett für .NET-Entwickler

Sie  lernen in drei (3) Tagen wie man mit  ASP.NET Core und den Technologien  MVC, Entity Framework, WebAPI und  Razor professionelle sowie moderne  Web-Anwendungsarchitekturen aufbaut.  Die Schulung ist der perfekte  Einstieg um insbesondere datengetriebene  und präsentationsorientierte  Applikationen auf Basis der robusten und  skalierbaren ASP.NET Core  Plattform zu erstellen. Nach der Veranstaltung kennen Sie die Konzepte von Angular und können Angular in neue und bestehende ASP.NET-Anwendungen einsetzen.

''' <summary>
''' Erzeugt aus einem String einen Suchstring der ähnliche Ergebisse findet
''' </summary>
''' <param name="str">Suchstring</param>
''' <param name="EnclosingTags">Soll der String ein führendes und folgendes % haben?</param>
''' <returns>Konvertierter Suchstring</returns>
''' <remarks>Ersetzt Sonderzeichen mit % und setzt ein % zwischen Ziffern/Buchstaben</remarks>
Public Function CreateSimilarSearchString(ByVal str As String, Optional ByVal EnclosingTags As Boolean = False) As String
	Dim numbers() As String = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}
	Dim IsNumber As Boolean
	Dim tmp As String = ""

	str = FindAndReplace(str, " ", "%", False)
	str = FindAndReplace(str, "-", "%", False)
	str = FindAndReplace(str, "_", "%", False)
	str = FindAndReplace(str, ".", "%", False)
	str = FindAndReplace(str, ",", "%", False)
	str = FindAndReplace(str, "+", "%", False)
	str = FindAndReplace(str, "(", "%", False)
	str = FindAndReplace(str, ")", "%", False)
	str = FindAndReplace(str, "*", "%", False)
	str = FindAndReplace(str, "'", "%", False)
	CreateSimilarSearchString = ""

	If Len(str) > 1 Then
		tmp = Mid(str, 1, 1)
		If ArrExist(numbers, Mid(str, 1, 1), False) > -1 Then
			IsNumber = True
		Else
			IsNumber = False
		End If

		For i = 2 To Len(str)
			If ArrExist(numbers, Mid(str, i, 1), False) > -1 Then
				If IsNumber = False Then
					tmp += "%" & Mid(str, i, 1)
					IsNumber = True
				Else
					tmp += Mid(str, i, 1)
				End If
			Else
				If IsNumber = True Then
					tmp += "%" & Mid(str, i, 1)
					IsNumber = False
				Else
					tmp += Mid(str, i, 1)
				End If
			End If
		Next
	End If
	If EnclosingTags = True Then tmp = "%" & tmp & "%"
	CreateSimilarSearchString = tmp
End Function

Abgelegt unter SQL, Ähnlichkeit, Suche, String.

1 Kommentare zum Snippet

Undeathly schrieb am 03.11.2011:
Hallo, wo finde ich die notwendigen Funktionen FindAndReplace und ArrExist bzw welche Imports muss ich noch machen?
 

Logge dich ein, um hier zu kommentieren!