Je voudrais tout sélectionner après un certain caractère (-) qui est placé du côté le plus à droite.
Par exemple.
abcd-efgh-XXXX
Et je voudrais sélectionner la partie XXXX
Merci!
Vous pouvez utiliser:
select right(col, charindex('-', reverse(col)) - 1)
DECLARE @x varchar(100)
SET @x = 'abcd-efgh-XXXX'
SELECT RIGHT(@x, CHARINDEX('-', REVERSE(@x)) - 1)
Utilisation du fractionnement de chaîne disponible sur SQLServer 2016
;with cte
as
(
select
*,row_number() over (order by (select null)) as rownum
from string_split('abcd-efgh-XXXX','-')
)
select top 1 * from cte
order by rownum desc
@thegameiswar avait une solution intelligente, car j'avais besoin des résultats d'une liste délimitée par des virgules. Je n'ai pas SQL 2016, alors je l'ai fait fonctionner avec une fonction de scission définie par l'utilisateur.
;with cte
as
(
select
*,row_number() over (order by (select null)) as rownum
from database..[fn_SplitDelimitedList](@CommaDelimitedList,',')
)
select * from cte
order by rownum desc