|
| 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
| |
|
|