Avatar billede larsgrau Forsker
06. august 2020 - 14:27 Der er 5 kommentarer og
1 løsning

søgning

Hej

Jeg har en data base hvor et decimal felt kan være is null.

Nu prøver jeg at lave en select hvor den skal søge på et tal og de felter som er tomme

"Select * from main where pri_min >= '$pri_min'"
det virker godt nok
hvis jeg så prøver dette
"Select * from main where pri_min >= '$pri_min or is null'"
Det virker ikke, nogen ide ?
Avatar billede bvirk Guru
06. august 2020 - 14:58 #1
pri_min >= '$pri_min or isnull(pri_min)
Avatar billede arne_v Ekspert
06. august 2020 - 15:18 #2
standard SQL loesningen maa vaere:

"select * from main where (pri_min >= '$pri_min') or (pri_min is null)"
Avatar billede arne_v Ekspert
06. august 2020 - 15:19 #3
NB: det ser ud som om din applikation er pivaaben for SQL injection!
Avatar billede olsensweb.dk Ekspert
06. august 2020 - 16:00 #4
Avatar billede bvirk Guru
06. august 2020 - 16:02 #5
gruppen hedder mysql og isnull er en mysql funktion - og der har or lavere operator precedence end end  >= hvilket overflødiggør parenteser.
Enig i at man bør anvende prepared statements men det er jo nok bare elementære øvelser larsgrau afprøver
Avatar billede arne_v Ekspert
06. august 2020 - 16:26 #6
Helt korrekt.

Men jeg har nogle saere ideer bl.a. foretraekker jeg standard SQL konstruktioner fremfor database specifikke konstruktioner og jeg foretraekker (hvis jeg lige husker det) at saette saa mange parenteser at evaluation order styres af dem.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester