Archivio

Posts Tagged ‘MSSQL2005’

Trovare l’ultima occorrenza di una stringa in MSSQL 2005

6 febbraio 2009 Commenti chiusi

Venendo dal mondo Oracle mi aspettavo che la funzione CHARINDEX restituisse anche l’ultima occorrenza di una certa stringa all’interno di un’altra. Grave errore!
In realt? CHARINDEX di MSSQL 2005 non scansiona una stringa partendo da destra verso sinistra neanche mettendo un indice negativo, quindi ? necessario un piccolo trucco: invertire la stringa e cercare la prima occorrenza nella stringa cos? rovesciata.

Qui sotto una funzione che restituisce la posizione di partenza dell’ultima occorrenza del testo @search in una stringa @string.

CREATE FUNCTION [CHARINDEXR]   
(@string AS VARCHAR(1024),
 @SEARCH AS VARCHAR(1024))  
 
RETURNS INTEGER  AS  
BEGIN 
 
DECLARE @RetVal AS INTEGER
 
    SELECT @RetVal = datalength(RTRIM(@string)) - CHARINDEX(@SEARCH,REVERSE(RTRIM(@string))) + 1 
 
RETURN @RetVal
 
END
 
GO
VN:F [1.8.1_1037]
Rating: 0.0/5 (0 votes cast)
VN:F [1.8.1_1037]
Rating: 0 (from 0 votes)
Categorie:Informatica Tag: ,