bonjour,
je travaille avec postgresql 11
J'ai du texte et je veux extraire une sous-chaîne de ce texte :
le résultat correct doit être john dumas .1941
Code : Sélectionner tout - Visualiser dans une fenêtre à part "|a john dumas .|d 1941|e united states|=^A22306"
le résultat correct doit être john dumas .
Code : Sélectionner tout - Visualiser dans une fenêtre à part "|a john dumas .|e united states|=^A22306"
le résultat correct doit être john dumas .1941
Code : Sélectionner tout - Visualiser dans une fenêtre à part "|a john dumas .|=^A22306 |e united states |d 1941 |f admin "
le résultat correct doit être john dumas .1941
Code : Sélectionner tout - Visualiser dans une fenêtre à part "|a john dumas .|f admin |d 1941 |=^A22306 |e united states"
le résultat correct doit être john dumas .1941
Code : Sélectionner tout - Visualiser dans une fenêtre à part "|a john dumas .|f admin |d 1941 "
le résultat correct doit être john dumas .
Code : Sélectionner tout - Visualiser dans une fenêtre à part "|a john dumas . "
le résultat correct doit être john dumas .1941
Code : Sélectionner tout - Visualiser dans une fenêtre à part "john dumas .|e united states |d 1941 "
le résultat correct doit être john dumas .
Code : Sélectionner tout - Visualiser dans une fenêtre à part "john dumas ."
si le texte contient |a alors lisez depuis |a jusqu'à trouver le premier caractère | et si le texte contient |d alors lisez à partir de |d jusqu'à trouver le premier caractère | après |d comme exemple 1 et 3 et 4
si le texte contient |a alors lisez depuis |a jusqu'à trouver le premier caractère | et si le texte contient |d et ne contient aucun caractère | après |d donc lire de |d jusqu'à la fin du texte comme exemple 5
si le texte contient |a et si le texte ne contient aucun caractère | après |a donc lire de |a jusqu'à la fin du texte comme exemple 6
si le texte contient |a et ne contient aucun caractère |d, alors lisez à partir de |a jusqu'à ce que vous trouviez le premier caractère | après |a comme exemple 2
si le texte ne contient pas |a lit le texte depuis le début jusqu'à trouver le premier caractère | et si le texte contient |d et ne contient aucun caractère | après |d donc lire de |d jusqu'à la fin du texte comme exemple 7
si le texte ne contient pas |a et ne contient aucun caractère | donc lisez tout le texte depuis le début comme l'exemple 8
l'objectif principal de tous les exemples est de lire à partir de |a et de |d et si le texte ne contient pas |a, alors lisez depuis le début du texte.
Je veux avoir une seule requête select qui peut traiter tous ces exemples.
J'essaie avec ce code, mais le problème est que ce code ne donne le résultat correct que pour le premier exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 select replace(substring('|a john dumas .|d 1941|e united states|=^A22306' from '\|a(.+)\|e'), '|d', '')
le résultat est correct " john dumas . 1941"
quelqu'un peut-il m'aider à résoudre ce problème
merci d'avance
Partager