Toon posts:

[SQL 2K5] Null waarde ondervangen bij string 'plakken'

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb de volgende query:

SQL:
1
2
3
SELECT Relatienummer, Naam, Regio, (Straat + ' ' + convert(varchar,Huisnummer) + Huisnummertoevoeging) As Adres, Postcode, Plaats 
FROM Relaties 
where relatienummer = '29'


Deze werkt tenzij:
  • Straat
  • Huisnummer
  • Huisnummertoevoeging
leeg is, of één van deze leeg is. Ik krijg dan voor Adres de waarde NULL. Ik kan wel begrijpen hoe dit komt, NULL kun je niet ergens aan vast plakken. Maar ik begrijp nog niet hoe ik het moet oplossen.

  • whoami
  • Registratie: December 2000
  • Laatst online: 18:04
Kijk eens naar de ISNULL functie in de books online.

https://fgheysels.github.io/


Verwijderd

Topicstarter
ISNULL is toch een gewoon een functie die true or false terug geeft? Hoe kan ik die gebruiken in een select?

Na zoeken: http://www.sqlteam.com/item.asp?ItemID=510

thanks!

[ Voor 23% gewijzigd door Verwijderd op 08-12-2006 14:16 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 18:04
Eerst zoeken, dan een topic openen. :)

https://fgheysels.github.io/


  • Reinier
  • Registratie: Februari 2000
  • Laatst online: 20:00

Reinier

\o/

Kan je niet:
SQL:
1
SET CONCAT_NULL_YIELDS_NULL OFF

gebruiken?

  • Tanuki
  • Registratie: Januari 2005
  • Niet online
CASE WHEN ISNULL(kolomnaam) THEN '' ELSE kolomnaam END

Oeps. Ik dacht dat ISNULL hetzelfde was als "x IS NULL"

[ Voor 35% gewijzigd door Tanuki op 08-12-2006 14:42 ]

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


  • whoami
  • Registratie: December 2000
  • Laatst online: 18:04
ISNULL is een method die 2 parameters neemt: als je eerste parameter null is, wordt de tweede gereturned, als de eerste niet null is, wordt de eerste gereturned.
Niet moeilijk doen dus met CASE.

https://fgheysels.github.io/


  • Reinier
  • Registratie: Februari 2000
  • Laatst online: 20:00

Reinier

\o/

En ook niet moeilijk doen met ISNULL als je het mij vraagt. Gewoon zorgen dat een string + NULL de string oplevert. Met mijn oplossing hierboven dus ;)

Edit:
Okee, okee, dit is dus deprecated en verdwijnt in de volgende versie van SQL Server. Laat maar dus :z

[ Voor 27% gewijzigd door Reinier op 08-12-2006 15:01 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 18:04
Naast het feit dat het deprecated is, hou ik ook niet van dergelijke oplossingen, omdat dit dus vereist dat je een database optie moet zetten, en het dus het gedrag van andere dingen kan veranderen.

https://fgheysels.github.io/


  • Plekuz
  • Registratie: September 2002
  • Laatst online: 23-07 21:42

Plekuz

available in strong mint

COALESCE dan misschien ... hoewel dat eigenlijk niks anders is dan ISNULL in een ander jasje ...

"There he goes. One of God's own prototypes. Some kind of high powered mutant never even considered for mass production. Too weird to live, and too rare to die."


  • empheron
  • Registratie: Mei 2004
  • Laatst online: 10-03 14:26
COALESCE
Returns the first nonnull expression among its arguments.

Syntax
COALESCE ( expression [ ,...n ] )

Arguments
expression

Is an expression of any type.

n

Is a placeholder indicating that multiple expressions can be specified. All expressions must be of the same type or must be implicitly convertible to the same type.


dus :

COALESCE (straatnaam,'')+COALESCE(HUISNUMMER,'') ETC... dit is dus een directe kopie uit de transact-sql help...

[ Voor 17% gewijzigd door empheron op 08-12-2006 15:11 ]


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
Ben ik nou gek of werkt het al goed? Huisnummer + NULL is terecht NULL, huisnummer + "" is gewoon huisnummer.

Waarom terecht: "" is de waarde van huisnummertoevoeging als deze afwezig is; NULL als deze onbekend is. Je wilt niet per ongeluk nummer 5 en 5a verwarren, dus alleen als je zeker weet dat er geen huisnummertoevoeging is (="") dan wil je nummer 5 als resultaat.

Ik kan me voorstellen dat je huidige database rammelt; in dat geval is een enkele UPDATE voldoende om eenmalig NULL te vervangen door "". Je neemt dan van bestaande adressen eenmalig aan dat de toevoegingen 100% correct gecodeered zijn.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein

Pagina: 1