SQL Abfrage mit Platzhaltern
Hallo,
ich komme bei einem Problem leider nicht weiter. Ich habe eine Datenbank und darin eine Tabelle wo ich Zahlen abspeichere, nun soll nach diesen Zahlen gesucht werden. Dies ist ja einfach und klappt auch wunderbar.
Nun muss ich auch Zahlen mit Platzhalter in die Tabelle einfügen( ungefähr so 1494##) also, dass ich eine Abfrage mit einer bestimmten Zahl mache und diese Datensätze auch ausgegeben werden. Z.B. 1494## soll herauskommen wenn 149401, 149402, usw. in der Abfrage übergeben wird.
Mit freundlichen Grüßen Alex
ich komme bei einem Problem leider nicht weiter. Ich habe eine Datenbank und darin eine Tabelle wo ich Zahlen abspeichere, nun soll nach diesen Zahlen gesucht werden. Dies ist ja einfach und klappt auch wunderbar.
Nun muss ich auch Zahlen mit Platzhalter in die Tabelle einfügen( ungefähr so 1494##) also, dass ich eine Abfrage mit einer bestimmten Zahl mache und diese Datensätze auch ausgegeben werden. Z.B. 1494## soll herauskommen wenn 149401, 149402, usw. in der Abfrage übergeben wird.
- als Platzhalter für alle möglichen Zahlen (kann auch ein anderes Zeichen sein)
Mit freundlichen Grüßen Alex
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 248055
Url: https://administrator.de/forum/sql-abfrage-mit-platzhaltern-248055.html
Ausgedruckt am: 10.04.2025 um 12:04 Uhr
10 Kommentare
Neuester Kommentar
Moin,
das geht nur wenn du das "Muster" nachdem gesucht wird als Intervall oder Liste angeben kannst,
1494## entspricht z.b. 149400 bis 149499
1#9400 entspricht z.b. 119400, 129400, 139400 usw.
Wenns komplexer wird, müsstest du tatsächlich die Zahlen als (var)char abspeichern und mit entsprechenden (regulären) Ausdrücken durchsuchen.
Ggfs. kannst du aber auch die gespeicherte Zahl direkt in WHERE Klausel in einen varchar umwandeln und entsprechend filtern... aber performant ist das dann nicht mehr,
lg,
Slainte
das geht nur wenn du das "Muster" nachdem gesucht wird als Intervall oder Liste angeben kannst,
1494## entspricht z.b. 149400 bis 149499
1#9400 entspricht z.b. 119400, 129400, 139400 usw.
Wenns komplexer wird, müsstest du tatsächlich die Zahlen als (var)char abspeichern und mit entsprechenden (regulären) Ausdrücken durchsuchen.
Ggfs. kannst du aber auch die gespeicherte Zahl direkt in WHERE Klausel in einen varchar umwandeln und entsprechend filtern... aber performant ist das dann nicht mehr,
lg,
Slainte
Hallo Alex,
welche Datenbank verwendest Du?
Und wie sollen die Abfragen genau aussehen? In der DB sind anscheinend die Zahlen mit Platzhaltern, und wie suchst Du, nach genauen Zahlen oder auch mit Platzhaltern? Wenn Du nach genauen Werten suchst, würde das mit SQL Server z.B. so aussehen:
Anmerkung 1: Für die Geschwindigkeit gebe ich keine Garantie.
Anmerkung 2: Wenn Du als Platzhalter gleich den Unterstrich nimmst, dann sparst Du Dir das replace.
Wenn Du auch mit Platzhaltern suchen willst, dann dürfte das nicht so einfach gehen.
Gruß, Mad Max
welche Datenbank verwendest Du?
Und wie sollen die Abfragen genau aussehen? In der DB sind anscheinend die Zahlen mit Platzhaltern, und wie suchst Du, nach genauen Zahlen oder auch mit Platzhaltern? Wenn Du nach genauen Werten suchst, würde das mit SQL Server z.B. so aussehen:
1
select * from Tabelle where '149401' like replace (Spalte, '#', '_')
Anmerkung 2: Wenn Du als Platzhalter gleich den Unterstrich nimmst, dann sparst Du Dir das replace.
Wenn Du auch mit Platzhaltern suchen willst, dann dürfte das nicht so einfach gehen.
Gruß, Mad Max