WK 2026: Scoor de beste elektronica deals met ons advies. Scoor jouw winnende opstelling tijdens dit WK!
Toon posts:

[SQL] Order by en velden met Null of "" als waarde

Pagina: 1
Acties:
  • 149 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
We hebben een tabel waarin een veld null kan zijn, maar ook "" (leeg). Op dit veld wordt geordered waarbij het de bedoeling is dat de "" en de NULL waarde als 1 gezien wordt.

dus bv met de onderstaande tabel (tabelnaam blaat):
code:
1
2
3
4
5
6
ID  naam waarde
1   A    ""
2   B    NULL
3   C    ""
4   A    "bla"
5   C    "blaat"

en de query:
code:
1
select * from blaat order by  waarde, naam

zou ik de volgende output willen zien:
code:
1
2
3
4
5
1   A    ""
2   B    NULL
3   C    ""
4   A    "bla"
5   C    "blaat"

en Niet (wat we nu krijgen)
code:
1
2
3
4
5
1   A    ""
3   C    ""
4   A    "bla"
5   C    "blaat"
2   B    NULL

Mijn vraag is dus of er een manier is om het order by statement zo gek te krijgen dat hij NULL en "" als gelijke waardes ziet?

Ik weet dat dit kan door met een union te gaan werken en zaken te gaan casten, echter dit is hier helaas geen optie. Het zou dus in 1 query zonder union goed moeten gaan, is dit uberhaupt mogelijk?

Verwijderd

je wilt dat alle het '_lege_' bovenaan komt?

misschien kun je het met een if() in je query

if(kolom=NULL,'',kolom) as kolomnaam

ofzo? (niet getest)

  • Crazy D
  • Registratie: Augustus 2000
  • Nu online

Crazy D

I think we should take a look.

Je kan iets proberen (mits je db dit ondersteunt) als
IsNull(veld, '') as veld
Als veld dan null is wordt dit ''.

Exact expert nodig?


  • baskabas
  • Registratie: December 2000
  • Laatst online: 05-04 12:26
Dan moet je dit in de SELECT statement zetten:
code:
1
ISNULL([veld],1) as [veld]

:)

edit: Damn... Crazy_D was me voor ;)

  • Greyfox
  • Registratie: Januari 2001
  • Laatst online: 18:43

Greyfox

MSX rulez

In SQL-server werkt het volgende:
code:
1
2
SELECT IsNull(waarde, 1) AS waarde
FROM blaat

Damn, TeknoGecko was me voor.

MSX 2 rulez more


  • Dido
  • Registratie: Maart 2002
  • Nu online

Dido

heforshe

Met een case ?
code:
1
2
3
4
5
6
select id, naam,
  case when waarde is NULL then ""
     else waarde
   end as waarde1
from blaat
order by waarde1;

edit:

Iets aangepast

mmm. al een paar die me voor waren

Wat betekent mijn avatar?


Verwijderd

Topicstarter
Op woensdag 10 april 2002 12:59 schreef Crazy_D het volgende:
Je kan iets proberen (mits je db dit ondersteunt) als
IsNull(veld, '') as veld
Als veld dan null is wordt dit ''.
Hoe zet ik dat in m'n query? Zoiets? :
code:
1
2
3
select * from blaat 
where IsNull(waarde,"")
order by  waarde, naam

Dan nog ontstaat het probleem dat ik alleen lege velden selecteer, en dat is niet wat de bedoeling is. Hij moet 't zaakje sorteren waarbij hij in de sorteervolgorde een leeg veld ("") gelijk ziet aan een Null veld. De query moet dus niet exclusief lege/null velden opleveren.

//edit
in de tussentijd waren er al een hele bult andere antwoorden gekomen, waaronder ook het (voorlopige) antwoord voor mijn probleem. Nu eens kijken of dit het oplost :)

Verwijderd

code:
1
SELECT x,y,z,IsNull(kolom,'') as naam FROM tabel ORDER BY naam;

zoiets
Pagina: 1