web-dev-qa-db-fra.com

SQL Sélectionner tout après le caractère

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!

5
coblenski

Vous pouvez utiliser:

select right(col, charindex('-', reverse(col)) - 1)
23
Gordon Linoff
DECLARE @x varchar(100)
SET @x = 'abcd-efgh-XXXX'
SELECT RIGHT(@x, CHARINDEX('-', REVERSE(@x)) - 1)
2
ADyson

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
1
TheGameiswar

@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
1
KirstieBallance