[SQL] Velden combineren

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

  • Phock
  • Registratie: Augustus 2001
  • Niet online

Phock

nick is located above

Topicstarter
Ik heb een tabel in MSSQL 2000, daarin zitten o.a. de volgende veldnamen: Voornaam, Tussenvoegsel, Achternaam

Nu wil ik graag een query waarin ik de volledige naam in één veld terug krijg. Het moet dus een combinatie worden van 3 verschillende velden.

De bedoeling is om het uiteindelijk in een view te verwerken.

Ik heb op Internet lopen zoeken, en vond een voorbeeld waarin men een functie uitvoerde die hierop leek:

SELECT (Voornaam + ' ' + Tussenvoegsel + ' ' + Achternaam) AS Naam FROM Gebruikers

Echter bleek dit niet te werken...:'(

Wie o wie kan me helpen?

don't read this text........


Verwijderd

weggehaald.........

Verwijderd

Dit zou de goede manier moeten zijn. Wat gaat er precies verkeerd, wat is je foutmelding?
Misschien een tip: waar ik altijd problemen mee heb, is dat er bij Tussenvoegsel meestal een 'NULL'-value staat en dan krijg je dus helemaal niets terug... (waarde + NULL + waarde = NULL)

[ Voor 0% gewijzigd door Verwijderd op 31-07-2002 14:09 . Reden: voorbeeld erbij gezet ]


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 11:18

Dido

heforshe

code:
1
2
SELECT COALESCE(VELD1) || COALESCE(VELD2) || COALESCE(VELD3)  
FROM tabel

Zou het kunnen doen?

Wat betekent mijn avatar?


  • Phock
  • Registratie: Augustus 2001
  • Niet online

Phock

nick is located above

Topicstarter
Verwijderd schreef op 31 juli 2002 @ 14:08:
Dit zou de goede manier moeten zijn. Wat gaat er precies verkeerd, wat is je foutmelding?
Misschien een tip: waar ik altijd problemen mee heb, is dat er bij Tussenvoegsel meestal een 'NULL'-value staat en dan krijg je dus helemaal niets terug... (waarde + NULL + waarde = NULL)
_/-\o_ Thnx het werkt...het ligt idd aan de NULL....hmmm...moet ik daar maar weer eens een stored procedure voor schrijven ofzo... :(

don't read this text........


  • EL_Loco
  • Registratie: Oktober 2001
  • Laatst online: 08-11-2023

EL_Loco

alias Haco

zet een type in je tabel
if type ==0 geen tussenvoegsel
else wel tussen voegsel
en type gebuik je dan weer bij het opvragen, misschien een beetje omslachtig (vreemd woord) maar zo heb ik het een tijdje geleden opgelost

rumores non hiatus dremelunt
malleo omnia consentiunt
Lid van het Anti-Jamba front!


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 09:31

Crazy D

I think we should take a look.

Phock schreef op 31 juli 2002 @ 14:14:
[...]
_/-\o_ Thnx het werkt...het ligt idd aan de NULL....hmmm...moet ik daar maar weer eens een stored procedure voor schrijven ofzo... :(
.. + ISNULL(veld, '') + ...

Enigste nadeel is dat je dan tussen voor en achternaam 2 spaties krijgt ipv eentje, maar das met een ifje/case wel weer op te lossen.

Exact expert nodig?


  • maartenba
  • Registratie: November 2001
  • Laatst online: 29-08 17:05
Oracle zou kunnen leven met:
code:
1
2
3
4
SELECT (
     NVL(Voornaam, '') + ' ' + NVL(Tussenvoegsel, '') + ' ' + NVL(Achternaam, '')
) AS Naam
FROM Gebruikers

JetSQL (MS Access SQL) misschien ook ? Hoewel ik er een beetje voor vrees :)

edit:
Crazy_D was me voor :)


Ok een final version dan :)
code:
1
2
3
4
5
SELECT (
     ISNULL(Voornaam, '') + ' ' + ISNULL(Tussenvoegsel + ' ', '')
     + ISNULL(Achternaam, '')
) AS Naam
FROM Gebruikers

Geen probleem met de dubbele spaties hier...

Verwijderd

code:
1
2
3
4
SELECT case when voornaam      is not null then     voornaam      end + 
       case when tussenvoegsel is not null then ' '+tussenvoegsel end +
       case when achternaam    is not null then ' '+achternaam    end as naam
  FROM Gebruikers

  • Phock
  • Registratie: Augustus 2001
  • Niet online

Phock

nick is located above

Topicstarter
Ik hebt 't uiteindelijk op gelost op de volgende manier:
code:
1
2
SELECT (Voornaam + ISNULL(' ' + Tussenvoegsel, '') + ' ' + Achternaam) AS Naam
FROM Gebruikers


Dat is ISNULL ook werkt als je er een spatie in zet wist ik helemaal niet ;), blijkbaar is ' ' + NULL = NULL...maarjah...het werkt :D

don't read this text........

Pagina: 1