Seite 1 von 1

Letztes Vorkommen eines Zeichen

Verfasst: Do 6. Aug 2020, 11:37
von martin.koeditz
Hallo zusammen,

ich suche eine Möglichkeit, die Position des letzten Leerzeichens innerhalb einer Zeichenkette zu ermitteln. Also eine Suche "von rechts". Kennt jemand eine charmante Lösung hierfür?

Gruß
Martin

Re: Letztes Vorkommen eines Zeichen

Verfasst: Do 6. Aug 2020, 12:21
von andi
Hallo,

select position(' ' in reverse(<fieldname>))
fom <tablename>

LG A

Re: Letztes Vorkommen eines Zeichen

Verfasst: Do 6. Aug 2020, 12:25
von martin.koeditz
Hi Andi,

danke für den Tipp. Lege ich mir ab.

Gruß
Martin

Re: Letztes Vorkommen eines Zeichen

Verfasst: Do 6. Aug 2020, 14:53
von andi
Hallo Martin,

das SELECT war nicht ganz richtig, da POSITION auch wieder auch bei der verkehrten Zeichenkette bei 1 zu zählen beginnt, somit das Ergebnis noch von der Länge der Zeichenkette abgezogen und 1 addiert werden.

Hierzu ein Beispiel:

with test_table as
( select cast('Test 1' as varchar(20)) name1 from rdb$database
union all
select cast('Test 1 2 3 4' as varchar(20)) name1 from rdb$database
union all
select cast('Zeile 3 ' as varchar(20)) name1 from rdb$database
union all
select cast('Zeile4' as varchar(20)) name1 from rdb$database
)
select name1,
position(' ' in reverse(name1)) posvalue, char_length(name1) - position(' ' in reverse(name1)) + 1 pos_real,
substring(name1 from (char_length(name1) - position(' ' in reverse(name1)) + 1) for 1) test_1,
substring(name1 from (char_length(name1) - position(' ' in reverse(name1))) for 3) test_3,
case
when position(' ' in reverse(name1)) = 0 then 'not found'
else
'found at ' || (char_length(name1) - position(' ' in reverse(name1)) + 1)
end info
from test_table


LG A