MainframeSupports
tip uge 11/2007:

Jeg vil i denne uge henlede din opmærksomhed på SQL funktionen INSERT. DB2 indeholder i dag et utal af funktioner, ja så mange, at det er næsten umuligt at kende dem allesammen. INSERT funktionen er en af dem, jeg har haft stor glæde af. Og hvad er det så lige, at INSERT gør for dig. Jeg har typisk benyttet den til at gøre opbygningen af tegnstrenge i DB2 lettere.

Forestil dig, at du skal udskifte nogle tegn i en CHAR eller VARCHAR kolonne med en en anden værdi. Før jeg opdagede INSERT gjorde jeg sådan her:

UPDATE MYTABLE
SET CHARCOL = SUBSTR(CHARCOL, 1, 10) !! 'NEW' !! SUBSTR(CHARCOL, 14)
WHERE SUBSTR(CHARCOL, 11, 3) = 'OLD'

Det er faktisk lidt klodset at gøre det på ovennævnte måde, især når jeg i stedet kan benytte INSERT:

UPDATE MYTABLE
SET CHARCOL = INSERT(CHARCOL, 11, 3, 'NEW')
WHERE SUBSTR(CHARCOL, 11, 3) = 'OLD'

Læg mærke til, at der pludselig bliver konsistens mellem startposition og længde i SET delen og WHERE delen. I den "gamle" løsning er risikoen for at begå en tællefejl langt større. INSERT kan i øvrigt bruges til at indsætte flere tegn og til at fjerne tegn. Prøv følgende SQL kald for at se effekten:

SELECT INSERT('Kilroy is here', 8, 2, 'was')
     , INSERT('Never write never', 7, 5, 'say')
FROM SYSIBM.SYSDUMMY1

Forrige danske tip        Last tip in english        Tip oversigten