Pagina 1 van 1

SQL vraag

Geplaatst: 27 aug 2021, 14:24
door guntherstassen
Ik zit met het volgende probleem :

In een database is er een kolom "bestelnummer" waar van dat de inhoud steeds de volgende stramienen heeft :
1-45654-45
1-47546-87
1-57546-77
9-4454545
8-4565499

Ik krijg bv een parameter met de volgende waarde 15456544 om te zoeken in de SQL database.
Ik doe een "select * "-query uitvoeren en telkens het veld "bestelnummer" de "-"-tekens er uit halen en dan controleren als er een overeenkomst is.
Is er een mogelijkheid dat ik dat allemaal in een query kan steken zodat ik niet een volledige database zelf moet aflopen om een match te vinden?

Re: SQL vraag

Geplaatst: 27 aug 2021, 14:43
door DarkV
select * from table where replace(bestelnummer, '-') = tezoekenbestelnummer

Re: SQL vraag

Geplaatst: 27 aug 2021, 14:54
door wim.pi
Dan heb je in de DB nog een full table scan; dus als het performant moet zijn ben je er nog niet. (Al wel enorm veel performanter dan eerst de DB binnen te trekken natuurlijk).
Je zou dan beter ook een index hebben op de opgekuiste waarde...

Code: Selecteer alles

create unique index bestelnummer_idx on bestelling (replace(bestelnummer, '-'))

Re: SQL vraag

Geplaatst: 27 aug 2021, 15:16
door tizzen33
Kan je niet beter aan je zoekparameter de dashes toevoegen voor je de query uitvoert?

Re: SQL vraag

Geplaatst: 27 aug 2021, 15:20
door Sasuke
Dat dacht ik ook te zeggen, eerst de transform van je data doen en dan de query uitvoeren ?

Re: SQL vraag

Geplaatst: 28 aug 2021, 09:04
door guntherstassen
bedankt voor jullie reactie. de snelheid van de query is nu veel beter ;-)

Re: SQL vraag

Geplaatst: 28 aug 2021, 09:36
door 8balljunkie
Als je de programmatie niet kan aanpassen is het handig om gewoon in een aparte kolom het bestelnr te bewaren zonder de -

Ik weet niet welke database vendor je hebt, maar als default verwijzing niet gaat kan je dat nog altijd via een trigger.

Re: SQL vraag

Geplaatst: 30 aug 2021, 09:04
door DarkV
tizzen33 schreef:Kan je niet beter aan je zoekparameter de dashes toevoegen voor je de query uitvoert?
Op het eerste gezicht zit er niet echt een logica in de formatering (het is alvast niet 1-5-2).

Re: SQL vraag

Geplaatst: 31 aug 2021, 13:06
door Block
Oplossing van 8balljunkie lijkt mij ook de beste. Zeker als een andere server gegevens uitleest van je database.

Re: SQL vraag

Geplaatst: 31 aug 2021, 22:54
door cptKangaroo
Als je zeker bent van de unieke IDs kan je misschien nog een beperking van 1 resultaat toevoegen?