web-dev-qa-db-ja.com

SQL文字の後のすべてを選択

一番右側にある特定の文字(-)の後にすべてを選択したいと思います。

例えば。

abcd-efgh-XXXX

そして、XXXX部分を選択したい

ありがとう!

6
coblenski

次を使用できます。

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

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には賢い解決策がありました。コンマ区切りのリストからの結果が必要だったからです。私はSQL 2016を持っていないので、ユーザー定義の分割関数で動作するようにしました。

;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
select substr('Prueba,Prueba2',instr('Prueba,Prueba2',',') + 1) from dual
0
user11790343

SQL Server Management Studio v15.0.18206.0(18.4):

RIGHT([col]、CHARINDEX( '-'、REVERSE([col])、-1))

0
meraxes