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;
3 Réponses :
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. p> Vous pouvez en outre extraire une partie différente des numéros de modification des informations \ 1, \ 2, \ 3, \ 4, \ 5 dans regexp_reaplce p> p>
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 ", ... code> obtiendra
2000-01- 01 00:00:00 "," Autre ":" ABC code> comme valeur pour
Démarrer code>)
@ Mt0 je sais, mais je n'ai pas dit que c'est une solution universelle.
Utilisez l'expression régulière Ceci trouvera la valeur correcte pour une clé donnée, que l'ordre du Json est changé. p> Oracle Configuration forte>: p> [{,] \ 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.
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
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.
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", ... code> obtiendra
2000-01-01 00:00:00 "," Autre ":" ABC code> comme valeur pour
Démarrer code>)
@ Mt0 j'ai essayé de le signaler dans le que vous êtes sûr ... code> fait également.
Quelle est votre version Oracle?
11g code>?
12c code>?
@Arunpalanisamy
11g code>