novembre
2011
En T-SQL la fonction SUBSTRING (c,p,n) retourne n caractères de c (à partir de la gauche) à partir de la position p. Et si je veux retourner n caractères de c à partir de la droite depuis la position ? Et si je veux retourner une sous-chaîne de c bornées entre les positions p1 et p2 ? c’est à dire une fonction du genre BETWEEN_STR (c, p1, p2) qui retournerait une sous chaine de c compris entre les positions p1 et p2 ?
1. Fonction BETWEEN_STR_LEFT
RETURNS NVARCHAR(max)
AS
BEGIN
RETURN SUBSTRING(@str,@start,@end - @start +1)
END
Test BETWEEN_STR_LEFT :
SELECT dbo.BETWEEN_STR_LEFT('abcdef',2,4) AS [BETWEEN_STR_LEFT] -- resultat bcd
2. Fonction BETWEEN_STR_RIGHT
RETURNS NVARCHAR(max)
AS
BEGIN
RETURN REVERSE(SUBSTRING(REVERSE(@str),@start,@end - @start +1))
END
Test BETWEEN_STR_RIGHT :
SELECT dbo.BETWEEN_STR_RIGHT('abcdef',2,4) AS [BETWEEN_STR_RIGHT] -- resultat cde
3. Fonction PAT_RIGHT
RETURNS NVARCHAR(max)
AS
BEGIN
RETURN RIGHT(@str,PATINDEX('%'+@motif+'%',@str)+1)
END
Test PAT_RIGHT :
SELECT dbo.PAT_RIGHT('abcdef','cd') AS [PAT_RIGHT] -- resultat 'cdef'
4. Fonction PAT_LEFT
RETURNS NVARCHAR(max)
AS
BEGIN
RETURN LEFT(@str,PATINDEX('%'+@motif+'%',@str)+1)
END
Test PAT_LEFT:
SELECT dbo.PAT_LEFT('abcdef','cd') AS [PAT_LEFT] -- resultat 'abcd'
Happy Query
——————–
Etienne ZINZINDOHOUE
——————–