Bonjour, je souhaite par une requête unique détecter tous les enregistrements d’une table pour lesquels une colonne contient des caractères incorrects (c’est à dire < X’40′). j’avais trouvé la fonction regex_like mais celle-ci me renvoie tous les enregistrements :
SELECT *
ça ne marche pas parce que les fonctions REGEXP_… (expressions régulières) testent les valeurs ASCII des chaines bien que celles-ci soient stockées en EBCDIC.
Il n’existe pas une plage unique en ASCII/UTF8 correspondant à la plage de caractères EBCDIC x’40′-x’FF’.
La classe de caractères ASCII ‘[^\x20-\x7E]’ répond à la définition de caractères non imprimables en ASCII mais comprend pourtant les caractères accentués ainsi que beaucoup de caractères spéciaux traduisibles en EBCDIC. Il faudrait donc la restreindre encore.
On peut néanmoins utiliser :
SELECT *
FROM MABIB.MATABLE T1
WHERE REGEXP_LIKE(T1.MACOLONNE, '[^\x20-\x7E]');