/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
ingenting større end nul
Fra : Leif Neland


Dato : 07-09-06 15:11

MSsql

Jeg har en tabel med et felt, der kan være null.
Jeg vil gerne sortere på dette felt.
Men null skal komme til sidst.

"select * from tabel order by sortfelt asc"

Her kommer null først.

I Mysql ville jeg lave noget med ifnull, men det er vist mysql-specifikt...

Leif
..



 
 
Jens Gyldenkærne Cla~ (07-09-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 07-09-06 15:31

Leif Neland skrev:

> Jeg har en tabel med et felt, der kan være null.
> Jeg vil gerne sortere på dette felt.
> Men null skal komme til sidst.


   SELECT * FROM tabel
   ORDER BY ISNULL(felt, 'ÅÅÅ')

(erstatter NULL med 'ÅÅÅ' og sorterer efter det)

   SELECT * FROM tabel
   ORDER BY CASE WHEN felt IS NULL THEN 1 ELSE 0 END, felt

(sorterer først på NULL/ikke NULL og dernæst på feltet)
--
Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
eller Brønshøj, max 6000 pr. måned.
Kontakt pr. mail - nospam(at)gyros.dk
Jens Gyldenkærne Clausen

Troels Arvin (08-09-2006)
Kommentar
Fra : Troels Arvin


Dato : 08-09-06 08:38

On Thu, 07 Sep 2006 16:30:33 +0200, Jens Gyldenkærne Clausen wrote:
>    SELECT * FROM tabel
>    ORDER BY ISNULL(felt, 'ÅÅÅ')

Jeg anbefaler brug af COALESCE i stedet for ISNULL, fordi COALESCE er
standard-SQL (i modsætning til ISNULL), og findes på alle betydende
databasesystemer, undtagen Access.

(ISNULL er i øvrigt overraskende forskellig på hht. MSSQL og Access.
Noget rod.)

--
Greetings from Troels Arvin


Jens Gyldenkærne Cla~ (08-09-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 08-09-06 09:09

Troels Arvin skrev:

> Jeg anbefaler brug af COALESCE i stedet for ISNULL, fordi
> COALESCE er standard-SQL (i modsætning til ISNULL), og findes
> på alle betydende databasesystemer, undtagen Access.

O.k. - har aldrig hørt om den før, men den er fluks skrevet bag
øret. Det ser dog ud til at der kan være en smule performancetab
ved COALESCE i forhold til ISNULL, men det er ikke noget der er
fuld enighed om.
--
Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
eller Brønshøj, max 6000 pr. måned.
Kontakt pr. mail - nospam(at)gyros.dk
Jens Gyldenkærne Clausen

Troels Arvin (08-09-2006)
Kommentar
Fra : Troels Arvin


Dato : 08-09-06 19:01

On Fri, 08 Sep 2006 10:08:41 +0200, Jens Gyldenkærne Clausen wrote:
> Det ser dog ud til at der kan være en smule performancetab
> ved COALESCE i forhold til ISNULL, men det er ikke noget der er
> fuld enighed om.

Det er der nogle, der hævder. Andre synes at hævde det modsatte. Fælles
for begge lejre synes at være at de ikke indser, at forskellen i givet
fald er så lille, at det ikke giver mening at tale om den.

--
Regards,
Troels Arvin <troels@arvin.dk>
http://troels.arvin.dk/


Kaj Julius (10-09-2006)
Kommentar
Fra : Kaj Julius


Dato : 10-09-06 16:31


> O.k. - har aldrig hørt om den før, men den er fluks skrevet bag
> øret. Det ser dog ud til at der kan være en smule performancetab
> ved COALESCE i forhold til ISNULL, men det er ikke noget der er
> fuld enighed om.

COALESCE er jo også noget mere "magtfuld", idet den kan tage flere felter og
vil vælge den første værdi som er forskellig fra null. Det er selvfølgelig
forholdsvis sjældent man har brug for den funktionalitet, men jeg har f.eks.
brugt det i en situation, hvor jeg havde et par filer med kampagnepriser:

SELECT v.vnr, v.tekst, COALESCE(k1.pris, k2.pris, k3.pris, v.pris, 0)
FROM varer v
LEFT JOIN kampagne1 k1 ON v.vnr=k1.vnr
LEFT JOIN kampagne2 k2 ON v.vnr=k2.vnr
LEFT JOIN kampagne3 k3 ON v.vnr=k3.vnr

Hvis en vare er med i flere kampagner, vil rækkefølgen af felterne i
COALESCE afgøre hvilken pris der vælges.

Og ud over, at COALESCE er mere "magtfuld" end ISNULL, så er den jo, som det
er blevet påpeget, standardiseret.




Thorbjørn Ravn Ander~ (07-09-2006)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 07-09-06 16:36

"Leif Neland" <leif@neland.dk> writes:

> Men null skal komme til sidst.

Understøtter MSSQL "union" så kunne du jo eventuelt gøre det sårn.
--
Thorbjørn Ravn Andersen

Peter Lykkegaard (07-09-2006)
Kommentar
Fra : Peter Lykkegaard


Dato : 07-09-06 17:38

"Thorbjørn Ravn Andersen" wrote:
>
> Understøtter MSSQL "union" så kunne du jo eventuelt gøre det sårn.

IsNull som Jens foreslog

Kunne være interessant at lave en lille uvidenskabelig måling :)

- Peter

--
Hi! I'm a .signature *virus*!
Copy me into your ~/.signature to help me spread!



Jan Bachman (07-09-2006)
Kommentar
Fra : Jan Bachman


Dato : 07-09-06 19:42

On Thu, 7 Sep 2006 16:11:15 +0200, "Leif Neland" <leif@neland.dk>
wrote:

>MSsql
>
>Jeg har en tabel med et felt, der kan være null.
>Jeg vil gerne sortere på dette felt.
>Men null skal komme til sidst.
>
>"select * from tabel order by sortfelt asc"
>
>Her kommer null først.
>
>I Mysql ville jeg lave noget med ifnull, men det er vist mysql-specifikt...
>
>Leif
>.
>

select * from tabel
order by case when felt is null then 2 else 1 end, felt

/Jan

Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409077
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste