Přímým způsobem? Ne, ale použil jsem obrácený postup. Doslova.
V předchozích rutinách jsem k nalezení posledního výskytu daného řetězce použil funkci REVERSE(), po níž následoval CHARINDEX, následovaný opět REVERSE, abych obnovil původní pořadí. Například:
SELECT
mf.name
,mf.physical_name
,reverse(left(reverse(physical_name), charindex('\', reverse(physical_name)) -1))
from sys.master_files mf
ukazuje, jak extrahovat skutečné názvy databázových souborů z jejich „fyzických jmen“, bez ohledu na to, jak hluboko jsou vnořeny v podsložkách. Toto vyhledá pouze jeden znak (zpětné lomítko), ale můžete na tom stavět pro delší vyhledávací řetězce.
Jedinou nevýhodou je, že nevím, jak dobře to bude fungovat na datových typech TEXT. Používám SQL 2005 již několik let a již nejsem obeznámen s prací s TEXTem – ale zdá se mi, že si vzpomínám, že byste na něm mohli používat LEFT a RIGHT?
Filip