Temat: [Oracle] funkcja SUBSTR jako odpowiednik funckji...

Witam,
Z tego co wiem Oracle nie posiada funkcji obcinającej zadaną ilość znaków z prawej lub lewej strony - odpowiednika Accesowego right(pole,9)

Dlatego żeby zostawić 9 znaków z prawej strony stosuje funkcję substr(pole,length(pole)-8,9) lub prościej substr(pole,length(pole)-8).

Problem pojawia się gdy pierwotnie pole miało mniej niż 9 znaków, wtedy wychodzi liczba ujemna i oracle zwraca tylko ostatnią cyfrę ciągu...

6976642 -> 2
300-15-86 -> 6
22-111-57 -> 7

Jak sobie z tym poradzić?

A może da się prościej emulować funkcję right?
Łukasz Schabek

Łukasz Schabek Architekt Rozwiązań

Temat: [Oracle] funkcja SUBSTR jako odpowiednik funckji...

Michał K.:

Cześć,

Można tak: substr(pole, greatest(length(pole)-9, 0), 9)

Jeśli pozycja jest ujemna, to zaczyna od 0.
Krzysztof Bielecki

Krzysztof Bielecki Senior consultant,
Capgemini Polska

Temat: [Oracle] funkcja SUBSTR jako odpowiednik funckji...

a może regexp_substr :D

Temat: [Oracle] funkcja SUBSTR jako odpowiednik funckji...

Dziękuję za pomoc, oba rozwiązania są interesujące:)



Wyślij zaproszenie do