If you can create an additional FUNCTION in your database, you can use this following script to get your desired output.
Create Function:
CREATE FUNCTION FIND_CHARINDEX
(@TargetStr VARCHAR(8000),
@SearchedStr VARCHAR(8000),
@Occurrence INT
)
RETURNS INT
AS
BEGIN
DECLARE @pos INT, @counter INT, @ret INT;
SET @pos = CHARINDEX(@TargetStr, @SearchedStr);
SET @counter = 1;
IF @Occurrence = 1
SET @ret = @pos;
ELSE
BEGIN
WHILE(@counter < @Occurrence)
BEGIN
SELECT @ret = CHARINDEX(@TargetStr, @SearchedStr, @pos + 1);
SET @counter = @counter + 1;
SET @pos = @ret;
END;
END;
RETURN(@ret);
END;
SELECT Statement:
DECLARE @S_String VARCHAR(20) = '05'
DECLARE @S_String_New VARCHAR(20) = ';'+@S_String+';'
SELECT
REVERSE(
SUBSTRING(
REVERSE(
SUBSTRING(
';'+Day+';',
0,
(CHARINDEX(@S_String_New,';'+Day+';',0)+LEN(@S_String)) +1
)
),
0,
CHARINDEX(
';',
REVERSE(SUBSTRING(';'+Day+';',0, (CHARINDEX(@S_String_New,';'+Day+';',0)+LEN(@S_String)) +1)),
0
)
)
),
REVERSE(
SUBSTRING(
REVERSE(
SUBSTRING(
';'+PRICE+';',
0,
(
dbo.FIND_CHARINDEX(
';',
';'+PRICE+';',
(
LEN(SUBSTRING(';'+Day+';',0, (CHARINDEX(@S_String_New,';'+Day+';',0)+LEN(@S_String)) +1))
- LEN(REPLACE(SUBSTRING(';'+Day+';',0, (CHARINDEX(@S_String_New,';'+Day+';',0)+LEN(@S_String)) +1),';',''))+1
)
)
)
)
),
0,
CHARINDEX(
';',
REVERSE(
SUBSTRING(
';'+PRICE+';',
0,
(
dbo.FIND_CHARINDEX(
';',
';'+PRICE+';',
(
LEN(SUBSTRING(';'+Day+';',0, (CHARINDEX(@S_String_New,';'+Day+';',0)+LEN(@S_String)) +1))
- LEN(REPLACE(SUBSTRING(';'+Day+';',0, (CHARINDEX(@S_String_New,';'+Day+';',0)+LEN(@S_String)) +1),';',''))+1
)
)
)
)
),
1
)
)
)
FROM your_table
WHERE ';'+Day+';' LIKE '%'+@S_String_New+'%'