Je dois écrire une requête Oracle SQL où je dois vérifier que la longueur de la chaîne est de 64 ou non si c'est 64 dans cette chaîne. 'Lst021_23-fehlerdatenprotokoll.aendienSt2019.06.11_08.48.42.tx' Ensuite, l'extension de la chaîne doit être txt et nous devons supprimer la partie de la chaîne jusqu'à - aussi
donc pour la chaîne de J'essaie d'écrire cette requête p>
'lst021_23-fehlerdatenprotokoll.aendienSt2019.06.11_08.48.42.tx' code> La sortie sera p>
3 Réponses :
Vous avez une question de syntaxe dans le script. Essayez de cette façon
Et ça? Si la longueur est 64, alors:
- code>) à la fin de la chaîne li>
- Appliquer
regexp_replace substitue et remplace le dernier "mot" ( \ w + $ code>) avec txt code> (comme indiqué que l'extension doit être TXT CODE>) LI>
ul> ici nous allons: P>
SQL> with test (id, col) as
2 (select 1, 'Lst021_23-Fehler-Datenprotokoll.AenDienst.2019.06.11_08.48.42.tx' from dual
3 union all
4 select 2, 'blabla-Something-else.Which_is_64_characters_long.2019.06.12.txt' from dual
5 union all
6 select 3, 'This will not be "fixed" as it is shorter than 64 chars.exe' from dual
7 union all
8 select 4, 'Yet another nice string-Kein_Fehler.Mitwoch.2019.06.13_22.22.com' from dual
9 )
10 select
11 id,
12 case when length(col) = 64 then
13 regexp_replace(substr(col, instr(col, '-') + 1), '\w+$', 'txt')
14 else col
15 end result
16 from test;
ID RESULT
--- -----------------------------------------------------------------
1 Fehler-Datenprotokoll.AenDienst.2019.06.11_08.48.42.txt
2 Something-else.Which_is_64_characters_long.2019.06.12.txt
3 This will not be "fixed" as it is shorter than 64 chars.exe
4 Kein_Fehler.Mitwoch.2019.06.13_22.22.txt
SQL>