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