Hallo, ik hoop dat iemand me hier met het volgende kan helpen.
Ik wil van 4 kolommen (1 tabel) een enkele kolom maken.
De kolommen zijn Titvcode, Voorlet, Voorvoegsel, Achternm.
Nu is de kolom Titvcode en de kolom Voorvoegsel niet altijd gevuld.
Wanneer ik 1 Case maak: CASE WHEN TITVCODE IS NULL THEN (VOORLET + ' ' + VOORVOEGSEL + ' ' + ACHTERNM) ELSE (TITVCODE + '. ' + VOORLET + ' ' + VOORVOEGSEL + ' ' + ACHTERNM) END AS VOLNAAM dan krijg ik logischerwijs in de kolom VOLNAAM enkel de persoon Zonder Titvcode.
Gebruik ik de Case: CASE WHEN VOORVOEGSEL IS NULL THEN (TITVCODE + '. ' + VOORLET + ' ' + ACHTERNM) WHEN LEN(VOORVOEGSEL) = 0 THEN (TITVCODE + '. ' + VOORLET + ' ' + ACHTERNM) ELSE (TITVCODE + '. ' + VOORLET + ' ' + VOORVOEGSEL + ' ' + ACHTERNM) END AS VOLNAAM dan krijg ik alles behalve de personen die geen Titvcode hebben.
Mijn vraag is, hoe kan ik beide Case when gebruiken zodat ik zowel de personen zonder titelatuur zie EN de volledige naam van de personen welke een voorvoegsel hebben.
Alvast heel veel dank voor de hulp
meerdere case when gebruiken in SQL
meerdere case when gebruiken in SQL
OpenOffice 3.1 op Windows
Re: meerdere case when gebruiken in SQL
Voorlopig is deze reactie meer nog een inleiding om wat meer begrip te krijgen van de vraag.
Als ik goed begrijp moet er altijd het volgende komen te staan: Er is wel een voorwaarde en dat is als er lege velden zijn moeten er geen overbodige spaties staan.
HSQLDB 1.8.10 heeft een mooie functies die waarschijnlijk eenvoudig voor elkaar kan maken dat het TITVCODE en '. ' alleen afgedrukt worden wanneer het veld TITVCODE <> aan NULL.
De eigenschap NULL in een database veld heeft een bijzondere eigenschap namelijk dat wat er ook aan bewerking gedaan wordt het eind resultaat in het algemeen NULL is.
Ik zou zeggen ga eens oefenen de functie
COALESCE. Ik zal er ook een uitwerking bij doen maar ik heb die niet daadwerkelijk getest: Als je een goede formule hebt gevonden. De twee staande strepen is SQL taal voor het samenvoegen van een tekst.
Ik heb het idee dat het geheel als volg moet kunnen werken Ik heb bovenstaande code niet getest
Als ik goed begrijp moet er altijd het volgende komen te staan:
Code: Selecteer alles
TITVCODE + '. ' + VOORLET + ' ' + VOORVOEGSEL + ' ' + ACHTERNM
HSQLDB 1.8.10 heeft een mooie functies die waarschijnlijk eenvoudig voor elkaar kan maken dat het TITVCODE en '. ' alleen afgedrukt worden wanneer het veld TITVCODE <> aan NULL.
De eigenschap NULL in een database veld heeft een bijzondere eigenschap namelijk dat wat er ook aan bewerking gedaan wordt het eind resultaat in het algemeen NULL is.
Ik zou zeggen ga eens oefenen de functie
COALESCE. Ik zal er ook een uitwerking bij doen maar ik heb die niet daadwerkelijk getest:
Code: Selecteer alles
COALESCE( TITVCODE || '. ' , '')
Ik heb het idee dat het geheel als volg moet kunnen werken
Code: Selecteer alles
COALESCE( TITVCODE || '. ' , '') ||
COALESCE( VOORLET || ' ' , '') ||
COALESCE( VOORVOEGSEL || ' ' , '') ||
COALESCE( ACHTERNM || ' ' , '') as VOLNAAM
-- twee platte streepjes is commentaar
-- '' staat voor enkelvoudige aanhalings tekens voor echte tekst in dit geval een lege string. Een lege string is niet gelijk aan een NULL waarde
LibreOffice 24.2.4.2 op openSUSE Leap 15.6