
Ved Renden 31 2870 Dyssegaard Tel. +45 23 34 54 43
| 
MainframeSupports tip uge 34/2007:
For nylig blev jeg spurgt om, hvordan man lettest muligt fjernede efterstillede blanke
i PL/I. Det viste sig, at de blanke skulle fjernes, fordi de ikke skulle fylde op i en
DB2 VARCHAR kolonne. Det er en gammel problemstilling, jeg stiftede bekendtskab med for
mange år siden. Der findes sandsynligvis rigtig mange VARCHAR kolonner, der er fyldt til
randen med efterstillede blanke, og dem gemmer DB2 selvfølgelig.
Hvis man vil have det nødvendige udbytte af at have en VARCHAR kolonne, så skal man
huske at længden skal være angivet korrekt inden man laver sin INSERT eller UPDATE af
en VARCHAR. For at få den rigtige længde kan man lave en lille rutine, der tæller baglæns
fra den maksimale længde af ens VARCHAR hostvariabel indtil den møder det første
ikke-blanke tegn. Men så slog det mig, at DB2 allerede i version 6 (vistnok) fik en STRIP
funktion. En version eller to senere fik DB2 så en RTRIM funktion, der svarer til en
STRIP, der kun tager sig af at fjerne efterstillede blanke. STRIP kan både fjerne
efterstillede og foranstille tegn og ikke bare blank-tegn.
I stedet for at kode fjernelsen af efterstillede blanke i sit program kan man simpelthen
overlade opgaven til DB2. Antag tabel STRIPPED med kolonnerne STRIPKEY CHAR(8) og STRIPDATA
VARCHAR(254). En traditionel INSERT i STRIPPED ser således ud:
INSERT INTO STRIPPED (STRIPKEY, STRIPDATA)
VALUES(:stripKey, :stripData)
Men det er faktisk meget fiksere at benytte:
INSERT INTO STRIPPED (STRIPKEY, STRIPDATA)
VALUES(:stripKey, RTRIM(:stripData))
At benytte RTRIM på ovennævnte måde har både den fordel, at vi ikke behøver at kode
fjernelsen af de efterstillede blanke selv, men også, at vi ikke behøver at bekymre os
så meget om datatypen for hostvariablen stripData, bare den kan indeholde tegn og har
en længde mindre end eller lig 254 tegn i dette eksempel. Faktisk er jeg lidt rystet over,
at jeg ikke har tænkt over dette tip for længe siden.
Forrige danske tip
Last tip in english
Tip oversigten
|