SQL DB2 for i and Regular Expression

1
297

Regular ExpressionDalla TR9 della versione IBMi 7.1 e dalla TR1 della 7.2 possiamo finalmente utilizzare anche dal nostro amato IBMi le Regular Expressions: certo non sono come una passeggiata al parco, ci vuole un attimo per capire di che si tratta, ma le potenzialità delle regular expressions sono fantastiche, e ben lo sa chi viene dal mondo C e Java …

Prima di vedere qualche esempio cominciamo a darne i prerequisiti … uno, come detto in apertura, IBMi 7.1 TR9 o 7.2 TR1 (e se non lo avete ancora fatto via di PTF immediatamente !).

Altro prerequisito il prodotto programma 5770SS1 Option 39 International Components for Unicode ..

Per capire meglio le Regular Expression vi consiglio la lettura di questo ottimo post di Michael Sansoterra:

Native Regular Expressions In DB2 For i 7.1 And 7.2

Vediamo invece qualche esempio che abbiamo testato da All-About-i.info:

Controllare la validità di un indirizzo mail come sintassi:

SELECT count(*) FROM sysibm.sysdummy1
WHERE
REGEXP_LIKE ('foo@foo.com',
'[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}$', 'i')

 

Oppure la validità di un numero di cellulare italiano nella forma +39.329.8188787′

SELECT count(*) FROM sysibm.sysdummy1
WHERE
REGEXP_LIKE ('+39.329.9197747',
'(00|\+)[0-9]{2}[\/|\-|\.]?[0-9]{3}[\/|\-|\.]?[0-9]{6,7}+$', 'i')

 

O ancora l’inserimento di una path completa stile windows c:\mydir\myfile.pdf

SELECT count(*) FROM sysibm.sysdummy1 
WHERE 
REGEXP_LIKE ('c:\mydir\mydir2\myfle.pdf', 
'^(?:(?:[a-z]:|\\\\[a-z0-9_.$?-]+\\[a-z0-9_.$?-]+)\\|\\?[^\\/:*?"<>|
\r\n]+\\?)(?:[^\\/:*?"<>|\r\n]+\\)*[^\\/:*?"<>|\r\n]*$', 'i')

Per altre regular expression basta cercare su Google o altro per trovare un sacco di esempi …

 

1 COMMENT