0
votes

Comment créer Oracle Minus-Délimité DateTime Format Regex?

Ma table a plusieurs colonnes. Les plus importants dans cet exemple sont 2 d'entre eux. J'ai la chaîne suivante dans DB Row:

SELECT REGEXP_SUBSTR(info, '[0-9]{4}-[0-9]{2}-[0-9]{1,2} [0-9]{2}:[0-9]{2}:[0-9]{2}') "REGEXPR_SUBSTR" from my_table WHERE value = 123;


2 commentaires

Quelle est votre version Oracle? 11g ? 12c ?


@Arunpalanisamy 11g


3 Réponses :


0
votes

Je ne suis pas sûr de quel type de problème avez-vous avec votre regexP.

mais vous devriez peut-être essayer quelque chose de ce qui est plus lisible. xxx

Vous pouvez en outre extraire une partie différente des numéros de modification des informations \ 1, \ 2, \ 3, \ 4, \ 5 dans regexp_reaplce


2 commentaires

Cela échouera si les paires de la valeur clé JSON sont dans un ordre différent et obtiendront des valeurs incorrectes s'il existe une autre paire de valeurs de clé entre les touches que vous attendez (c'est-à-dire ... "Démarrer": "2000-01 -01 00:00:00 "," autre ":" abc "," fin ":" 2001-01-01 00:00:00 ", ... obtiendra 2000-01- 01 00:00:00 "," Autre ":" ABC comme valeur pour Démarrer )


@ Mt0 je sais, mais je n'ai pas dit que c'est une solution universelle.



4
votes

Utilisez l'expression régulière [{,] \ s * "Démarrer" \ s *: \ s * "(((\\" | [^ "]) *)" code> pour trouver la clé -Value paire avec la clé Démarrer code> et une valeur citée et extraire le premier groupe de capture pour trouver la valeur.

Ceci trouvera la valeur correcte pour une clé donnée, que l'ordre du Json est changé. p>

Oracle Configuration forte>: p>

ID | VALUE | USERID | START_DT            | END_DT              | CNT
-: | ----: | :----- | :------------------ | :------------------ | :--
10 |   123 | 550    | 2020-01-10 14:07:29 | 2020-01-10 14:07:34 | 4  
20 |   456 | 551    | 2020-01-02 01:23:45 | 2020-02-03 12:34:56 | 1  
30 |   789 | 552    | 1999-01-01 00:00:00 | 2000-01-01 23:59:59 | 42 


0 commentaires

0
votes
SELECT REGEXP_REPLACE(info, 
                      '.*start":"(.*)","end".*',
                      '\1') "REGEXPR_SUBSTR" 
  FROM YOURTABLE
 WHERE CONDITIONS;
Might work for You if You don't mind there is no specific regexp for the date format, AND You are sure that there's no other info in between the start and end keywords.Note, this is a greedy regexp, You might want to adjust it.

2 commentaires

Cela échouera si les paires de la valeur de clé JSON figurent dans un ordre différent et, comme vous le mentionez, obtiendrez des valeurs incorrectes s'il existe une autre paire de valeur de clé entre les touches que vous attendez (c'est-à-dire ... "Démarrer" : "2000-01-01 00:00:00", "Autre": "ABC", "fin": "2001-01-01 00:00:00", ... obtiendra 2000-01-01 00:00:00 "," Autre ":" ABC comme valeur pour Démarrer )


@ Mt0 j'ai essayé de le signaler dans le que vous êtes sûr ... fait également.