Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1551 | Anzahl registrierter User: 1841 | Besucher online: 83
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Einfache Ähnlichkeitssuche (SQL)


Autor: Sebastian
Sprache: VB.NET
Bewertung:
noch nicht bewertet
Anzahl der Aufrufe: 5992
  
Kick it on dotnet-kicks.de  

Beschreibung:

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 ;-)


Abgelegt unter: SQL, Ähnlichkeit, Suche, String.



Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
''' <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

Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

Undeathly schrieb am:  03.11.2011 15:29:47

Hallo, wo finde ich die notwendigen Funktionen FindAndReplace und ArrExist bzw welche Imports muss ich noch machen?


Diese Snippets könnten für Sie interessant sein:
[C#] Schutz vor SQL-Injektion
[C#] Größe einer SQL-Server Datenbank ermitteln
[VB.NET] Größe einer SQL-Server Datenbank ermitteln
[VB.NET] SQL INSERT-Stringbuilder Function
[VB.NET] Mini-Sql-Command-Generator
[C#] CSV und XML-Datei Datenbank-Import (incl. valid-check)
[C#] Text Resourcen aus Assembly auslesen
[C#] T-SQL-Stored-Proc Generieren
[VB.NET] DataGridView Databinding mit LINQtoSQL
[VB.NET] Master-Detail Ansicht auf SQL Server-Daten mit LINQ-to-SQL
[C#] SQL Server Daten in Exel-Datei exportieren mit LINQ
[C#] Hole alle Datenbanken eines SQL Servers
[C#] SimpleDb
[C#] SqlDataSource.FilterExpression auf Bitflag filtern
[VB.NET] SQLCMD Parameter debuggen
[C#] Mit LINQ to SQL auf eine Datenbank zugreifen
[C#] Trivialer Datenbankzugriff
[C#] Fire-and-forget SQL-query (in 3 Zeilen)
[C#] Datenbankverbindung herstellen
[C#] Stopwörter in einem Text entfernen (Deutsch)
[C#] Stopwörter in einem Text entfernen (Englisch)
[C#] Binärsuche innerhalb einer Liste
[C#] Fuzzy Suche
[VB.NET] Alle Dateien eines Ordners auflisten
[VB.NET] Klasse für Dateisuche
[C#] Fundstelle eines Suchbegriffs markieren
[C#] Parallele Dateisuche über mehrere Laufwerke
[C#] Searchable ComboBox
[C#] Hexcode eines Strings ausgeben
[VB.NET] Größe eines Strings berechnen
[C#] String bei bestimmten Zeichen splitten
[C#] Encode To ASCII - Buchstaben in Ascii-Werte umwandeln
[C#] Gibt den MD5 Hash eines Stings als String zurück.
[C#] String in Byte Array und zurück wandeln
[VB.NET] Den SHA1 Hash eines Strings ermitteln
[VB.NET] Den MD5 Hash eines Strings ermitteln
[C#] Wandelt ein Bytearray in einen Binärstring
[VB.NET] Text auf Bild zeichnen
[C#] String auf Emailadresse prüfen
[C#] SHA-1 Hash eines Strings erzeugen
[VB.NET] Strings schnell zählen
[VB.NET] Pfad kürzen
[C#] Pfad kürzen
[C#] IsPositiveInteger as Extension Method
[C#] Datum und Zeit als String
[C#] String spiegeln
[VB.NET] String spiegeln
[C#] Erweiterung für Stringumwandlungen
[C#] Image in string wandeln und zurück
[C#] Strings komprimieren und dekomprimieren
[C#] CamelCase in Title Case konvertieren
[C#] Text zentriert in die Konsole schreiben
[VB.NET] Strings komprimieren und dekomprimieren
[VB.NET] Rows eines DataGridView in ein String-Array konvertieren
[C#] kontrolliert ob String eine gültige GUID ist
[C#] HTML aus einem String entfernen
[C#] byte-String in byte wandeln
[C#] Formelevaluierung aus RPN Form
[C#] Erzeugen eines zufälligen Strings
[C#] mehrfach vorkommende Worte entfernen
[C#] Determines whether the specified input is numeric
[C#] Prozentual Textvergleichen
[C#] doppelte Leerzeichen aus einem String entfernen
[C#] Zählt wie oft ein String in einem String vorkommt.
[C#] String kürzen ohne ein Wort abzuschneiden
[C#] String auf erlaubte Zeichen prüfen
[C#] Austauch von kritischen Zeichen in einem String...
[VB.NET] String in Byte Array und zurück wandeln
[C#] Gross- Kleinbuchstaben in String schnell zählen
[VB.NET] Listen, Arrays, Strings konvertieren
[C#] CRC32-Hash eines Strings
[VB.NET] CRC32-Hash eines Strings
[C#] Größe eines Strings berechnen
[VB.NET] String Splitten
[C#] Capitalize the first letter of every word
[VB.NET] Textdatei lesen und schreiben (String, StringArray, etc...)
[C#] Text2Bitmap (String in Bild umwandeln)
[C#] Double in String umwandeln (mit InvariantCulture)
[C#] String in Double umwandeln (mit InvariantCulture)
[C#] Convert MAC string to byte array
[C#] Reverse String
[C#] Stellt fest ob ein String ein Palindrom ist
[VB.NET] String umkehren
[C#] Letztes Wort aus einem String ermitteln
[C#] Erstes Wort aus einem String ermitteln
[VB.NET] List all controls by using the name of the controls
[C#] Alle E-Mail Adressen aus einem String bzw. Text filtern
[C#] StringSplitter
[C#] Initialisiert alle String-Properties
[C#] MD5 Verschlüsselung
[C#] HTML Tags aus String entfernen
[C#] Geschachtelte Methode zur String-Bearbeitung
[C#] Byte Größenangaben als String formatieren (KB, MB, GB, ...)
[VB.NET] Permutation nachweisen
[C#] Implode und Trim für String-Enumerationen (Extension Method)
[C#] String zu MD5
[C#] Tabulatorzeichen durch Leerzeichen ersetzen
[C#] String in einzelne Wörter aufteilen und Wörter zählen
[VB.NET] Passwortgenerator
[C#] Render MVC Action as string
[C#] Namen von Klassenmember als String ermitteln
[C#] IncreaseString
[VB.NET] String uebers Netzwerk oder Internet and einen PC senden
[C#] String to char Tarnung
[C#] C# XOR Crypt
[C#] String-Formatierung für Faule: Erweiterungsmethode
[C#] Darstellung eines ASP.NET Steuerelementes als HTML-String

schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.