Home > other >  Get Substring between two characters in SQL Server query
Get Substring between two characters in SQL Server query

Time:06-26

I want to get the string between two characters in the following string:

hello @user1, how are you?

I want to get the text between the @ and the SPACE after the @ which results in user1, is there a way to do this? There could even be 2 or more @ which I will need to extract like

hello @user1 ,@user2 ,@... , how are you?

here is a table-like example:

Sample Excpected Output
Hello @user1 and @user2 how are you? user1, user2
@user1 and @user2 replied user1, user2

but there will always be a SPACE after each @.

Thanks for the help.

CodePudding user response:

The usual way to approach would be a combination of String_Split() and String_Agg():

with sampledata as (
  select 'Hello @user1 and @user2 how are you?' sample union all
  select '@user1 and @user2 replied'
)
select sample, String_Agg(Replace([value], '@',''), ', ') Result
from sampledata
cross apply String_Split(sample,' ')
where [value] like '@%'
group by sample;

See Working fiddle

  • Related