I have a string with a specific pattern:
23;chair,red [$3]
i.e., a number followed by a semicolon, then a name followed by a left square br
Assuming they always exist and are not part of your data, this will work:
declare @string varchar(8000) = '23;chair,red [$3]' select substring(@string, charindex(';', @string) + 1, charindex(' [', @string) - charindex(';', @string) - 1)