Prosty sposób? Nie, ale użyłem odwrotnej strony. Dosłownie.
W poprzednich procedurach, aby znaleźć ostatnie wystąpienie danego ciągu, użyłem funkcji REVERSE(), a następnie CHARINDEX, a następnie REVERSE, aby przywrócić pierwotną kolejność. Na przykład:
SELECT
mf.name
,mf.physical_name
,reverse(left(reverse(physical_name), charindex('\', reverse(physical_name)) -1))
from sys.master_files mf
pokazuje, jak wyodrębnić rzeczywiste nazwy plików bazy danych z ich „nazw fizycznych”, bez względu na to, jak głęboko są zagnieżdżone w podfolderach. Wyszukuje tylko jeden znak (odwrotny ukośnik), ale można na nim bazować dla dłuższych ciągów wyszukiwania.
Jedynym minusem jest to, że nie wiem, jak dobrze będzie to działać na typach danych TEKST. Pracuję na SQL 2005 od kilku lat i nie jestem już zaznajomiony z pracą z TEXT-em -- ale przypominam sobie, że można na nim używać LEFT i RIGHT?
Filip