Afhankelijk van het al dan niet bestaan van een tussenvoegsel (zoals in: Wim de Bie) wil ik een tussenvoegsel toevoegen + een spatie.
Dit werkt niet: (ISBLANK(“Tussenvoegsel”), ,“Tussenvoegsel” || ’ ')
Hoe moet het wel…?
testen op NULL is een mogelijkheid:
select … , “voornaam” || CASE WHEN “tussenvoegsel” IS NULL THEN ’ ’ ELSE ’ ’ || TRIM( “tussenvoegsel”) || ’ ’ END || “achternaam” , …
TRIM toegevoegd, omdat een enkele spatie al tot een niet null waarde leidt.
voor alle regels en info over wat kan en mag, zie de engelse handleiding op handleiding
Uiteindelijk wordt het:
SELECT “Rnaam” || CASE WHEN “Tv” IS NULL THEN ’ ’ ELSE ’ ’ || TRIM ( “Tv” ) || ’ ’ END || “Anaam” AS “HeleNaam” FROM “tblPersoon”
Ik denk jouw suggestie letterlijk overgenomen te hebben. De SQL-string wordt wel opgeslagen, mar als ik hem run krijg ik: gegevens kunnen niet worden geladen.
Ik ben er dus nog niet.
de HSQLDB handleiding biedt uitkomst, de werkende expressie is:
select “Rnaam” || ’ ’ || CASE WHEN “Tv” IS NULL THEN ‘’ ELSE LTRIM( RTRIM(“Tv”) || ’ ') END || “Anaam” FROM “tblPersoon”
Bij de functie trim moet ook nog een trim character worden opgegeven: TRIM(BOTH ’ ’ FROM “Tv” ), sorry
Parseley… bedankt… je hebt me enorm op weg geholpen.
Jouw eerste SQL-sequence werkt goed. Als ik LTRIM( RTRIM(“Tv”) vervang door TRIM(BOTH ’ ’ FROM “Tv” ). Én ergens een haakje weghaal… werkt het… evengoed…?
Per ongeluk geplaatst… Weet niet hoe ik hem weghaal…
Heb even doorgespeurd op dat TRIM.
TRIM is niet nodig als Tv in de tabel een VARCHAR-specificatie heeft: HSQLDB past de ruimte die hij voor het veld gebruikt aan aan de hoeveelheid letters die je gebruikt.
Maar als je CHAR als gegevenstype gebruikt, moet je het aantal karakters opgeven dat je in de database voor de kolom Tv wil reserveren. Gegevens die je in Tv NIET vult worden opgevuld met karakters die je opgeeft. Heb je niets opgegeven, dan worden het spaties. Ja… om dan iets leesbaars te krijgen, móét je TRIM gebruiken om dat nietszeggende vulsel te verwijderen.