12
votes

Expressions régulières dans DB2 SQL

(autre que d'utiliser un UDF) toute prise en charge de REGEXP-IN-SQL pour DB2 9.7?


5 Réponses :


4
votes

Il n'y a pas de support intégré pour les expressions régulières dans DB2 9.7.

Le seul moyen utilise des fonctions UDF ou de table comme décrit dans l'article 'OMG Poneys' ajouté dans le commentaire.

@ Dan1111: Je n'apprécie pas mon message édité, surtout si les gens ne peuvent pas lire correctement la question. L'OP a demandé tout regexp-in- SQL SUPPORT POUR DB2 9.7

SQL n'est pas XQuery !!!

Désolé, ne supprimez pas le texte de ma réponse correcte de 100%. Vous pouvez ajouter un commentaire ou écrire votre propre réponse.


2 commentaires

Ce n'est pas vrai. L'expression régulière a été prise en charge dans DB2 9.7 via XQuery avec la fonction correspondante: publiib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/...


@Tannerfaulkner Il est temps. ;-) IBM est toujours en retard avec l'ajout de l'évidence.



7
votes

Je suis Komikoni (Keisuke Konishi).

J'ai créé la fonction d'expression régulière (UDF) qui n'existe pas dans DB2. L'UDF utilisant le SQL / XML (XQuery). Vous pouvez facilement installer.

Liste des expressions régulières fournit UDF

  1. reg_matches fournit une existence de coïncidence (scalaire)
  2. reg_replace Substitution de chaîne (scalaire)
  3. reg_Count Nombre de correspondances récupérées (scalaire)
  4. reg_position Acquisition de position de correspondance (scalaire)
  5. reg_substr Obtient une chaîne correspondante (scalaire)
  6. reg_substr_table Liste des informations de chaîne correspondantes (tableau)
  7. reg_Tokenize_table Liste des informations de chaîne incompatibles (divisées par une chaîne de séparation) (tableau)
  8. reg_allToken_Table Liste de la chaîne de décalage et des informations de chaîne correspondantes (tableau)

    Les scripts peuvent être téléchargés à partir d'ici. (Désolé en japonais)

    https://www.ibm.com/developerworks / JP / Data / Bibliothèque / DB2 / J_D-REGULAREXPRESSION /

    (Anglais: Traduction de la machine script: la dernière d'une page japonaise)

    J'attends vos commentaires et commentaires avec impatience.


0 commentaires

6
votes

La réponse réelle est que db2 est em> expression régulière puisque PureXML a été ajouté (V9.7 incluse) via XQuery avec la fonction de correspondance.

Par exemple: P>

db2 "with val as (
 select t.text
 from texts t
 where xmlcast(xmlquery('fn:matches(\$TEXT,''^[A-Za-z 0-9]*$'')') as integer) = 0
)
select * from val"


0 commentaires

5
votes

qui fonctionne bien, à l'exception de DB2 Z / OS - dans DB2 V10 Z / OS, vous devez utiliser le passage comme suit

   with val as (
     select t.text
     from texts t
     where xmlcast(xmlquery('fn:matches($v,"^[A-Za-z 0-9]*$")'
                    PASSING t.text as "v" ) as integer) = 0
    )
    select * from val


0 commentaires

8
votes

Démarrage de DB2 11.1 Il est assisté de regex intégré. Une des nouvelles fonctions est regexp_substr code> et il y en a d'autres.

SELECT REGEXP_SUBSTR('hello to you', '.o',1,1) 
   FROM sysibm.sysdummy1


0 commentaires