MSSQL Selektion eines Strings der im Bereich Von-Bis enthalten ist
Hallo,
ich habe eine Tabelle von Sachbearbeitern die einen gewissen Bestand an Kunden betreuen müssen.
Die Aufteilung ist wie folgt:
Sachbearbeiter 1
NachnameVon: "LEI%"
NachnameBis: "MIE%"
Sachbearbeiter 2
NachnameVon: "BAS%"
NachnameBis: "CAO%"
Eine Möglichkeit die ich habe ist die Suche mit BETWEEN:
Suche nach Sachbearbeitern für den Nachnamen "Leithner"
Allerdings müsste ich dann wissen an welcher Stelle im Alphabet welcher Buchstabe kommt denn nur so funktioniert die Suche.
Gibt es da vom SQL.Server etwas besseres ?
Für Eure Hilfe wäre ich sehr dankbar.
Gruss Stefan
ich habe eine Tabelle von Sachbearbeitern die einen gewissen Bestand an Kunden betreuen müssen.
Die Aufteilung ist wie folgt:
Sachbearbeiter 1
NachnameVon: "LEI%"
NachnameBis: "MIE%"
Sachbearbeiter 2
NachnameVon: "BAS%"
NachnameBis: "CAO%"
Eine Möglichkeit die ich habe ist die Suche mit BETWEEN:
Suche nach Sachbearbeitern für den Nachnamen "Leithner"
---SUCHE NACH DEN NAMEN MIT LEI............
SELECT
CASE WHEN
'L' BETWEEN 'L' AND 'M'
AND
'E' BETWEEN 'E' AND 'I'
AND
'I' BETWEEN 'I' AND 'E' ---hier muss ich eigentlich von 'E' nach 'I' suchen
THEN 1
ELSE 0
END
Allerdings müsste ich dann wissen an welcher Stelle im Alphabet welcher Buchstabe kommt denn nur so funktioniert die Suche.
Gibt es da vom SQL.Server etwas besseres ?
Für Eure Hilfe wäre ich sehr dankbar.
Gruss Stefan
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 488905
Url: https://administrator.de/contentid/488905
Ausgedruckt am: 16.11.2024 um 11:11 Uhr
4 Kommentare
Neuester Kommentar
Sachbearbeiter 1
NachnameVon: "LEI%"
NachnameBis: "MIE%"
Das wäre doch was für Pattern-Matching ...NachnameVon: "LEI%"
NachnameBis: "MIE%"
SELECT *
FROM SACHBEARBEITER
WHERE Nachname LIKE 'Le[i-z]%'
OR Nachname LIKE 'L[f-z][a-z]%'
OR Nachname LIKE 'M[a-h][a-z]%'
OR Nachname LIKE 'Mi[a-e]%';
Pattern Matching in Search Conditions
Die Aufteilung ist wie folgt:
Sachbearbeiter 1
NachnameVon: "LEI%"
NachnameBis: "MIE%"
Sachbearbeiter 2
NachnameVon: "BAS%"
NachnameBis: "CAO%"
Gibt es da vom SQL.Server etwas besseres ?
Sachbearbeiter 1
NachnameVon: "LEI%"
NachnameBis: "MIE%"
Sachbearbeiter 2
NachnameVon: "BAS%"
NachnameBis: "CAO%"
Gibt es da vom SQL.Server etwas besseres ?
du denkst zu kompliziert. Du schreibtst MSSQL als Produkt, und der kann seit 15 Jahren direkte Stringvergleiche.
Übersetz doch einfach mal deine Texte in das SQL-Englisch, dann bist du am Ziel
select * from Tabelle where left(nachnamenspalte,3) between 'LEI' and 'MIE'
oder
select * from Tabelle where left(nachnamenspalte,3) >='LEI' and left(nachnamenspalte,3) <='MIE'
wir nutzen genau sowas sehr intensiv, aber setz dir einen Index auf die Nachnamensspalte, ansonsten gibt das längere Hänger beim Zugriff auf die Datenbank.