MainframeSupports
tip uge 36/2016:

Data i DB2 tabeller bliver mere og mere tekstbaseret og såkaldte LOB-objekter vinder mere indpas i tabellerne. Det betyder også, at vi får brug for at kunne søge i de tekster, der gemmes i DB2. Til det formål stiller DB2 to forskellige funktioner til rådighed, nemlig POSITION og POSSTR.

Forskellen på de to funktioner er meget lille og de virker begge som INDEX i PLI og POS i REXX. Forskellen ligger mest i syntaksen, hvor de to parametre til POSSTR er i rækkefølgen (haystack, needle), mens den er (needle, haystack) i POSITION og POSITION skal have en tredie parameter kaldet string units. Denne parameter findes også på andre nyere funktioner i DB2. Så længe dine data er gemt i godt gammeldags EBCDIC format, så vil parameterværdien OCTETS være fuldt dækkende. De to andre værdier for string units er mest til brug for data gemt i UNICODE format.

Den store forskel på POSITION og POSSTR er, at needle parameteren i POSITION kan være en kolonne, men det kan den ikke i POSSTR. Jeg har flere gange haft behov for at lave en slags join mellem to tabeller, hvor jeg gerne ville finde indholdet af en kolonne i en tabel i en kolonne i en anden tabel. Sådan en join kan kun lade sig gøre med POSITION.

Forrige danske tip        Last tip in english        Tip oversigten