New-SqlWhereForSearch #
ÜBERSICHT #
Baut die SQL-Bedingung einer Suche über mehrere Spalten, mit und ohne Umlaut (“Völk” findet VOELK).
SYNTAX #
New-SqlWhereForSearch [[-Text] <string>] [-Column] <string[]> [[-Mode] <string>]
[<CommonParameters>]
BESCHREIBUNG #
Jede Schreibweise aus Get-SearchTextVariant wird gegen jede Spalte geprüft, alles mit OR verbunden und geklammert:
(a.Match LIKE ? OR a.Name1 LIKE ? OR a.Match LIKE ? OR a.Name1 LIKE ?)
Die Werte kommen als Parameter zurück, nie in den SQL-Text; die Platzhalter von LIKE (%, _, [) im Suchbegriff werden maskiert. Die Spaltenausdrücke kommen vom Aufrufer und müssen fest im Code stehen, nie aus einer Anfrage.
Ohne Suchbegriff ist Sql leer und Parameters ein leeres Feld - der Aufrufer hängt dann nichts an.
PARAMETER #
-Text #
Type: string
Default: ''
Der Suchbegriff.
-Column #
Type: string[]
Die Spaltenausdrücke, z.B. ‘a.Match’, ‘a.Name1’, ‘[Ort]’.
-Mode #
Type: string
Default: 'Contains'
Contains (Vorgabe): irgendwo im Feld. StartsWith: am Anfang des Felds.
AUSGABEN #
hashtable - Sql (string), Parameters (object[]), Variants (string[])
BEISPIELE #
$s = New-SqlWhereForSearch -Text $q -Column 'a.Match', 'a.Name1', 'a.Ort'
if ($s.Sql) { $where += $s.Sql; $params += $s.Parameters }