You can try this below logic-
Consider the first word after "Level " is building number.
After building number, string till next comma(",") is street address
WITH your_table(address)
AS
(
SELECT 'Shop 7 Ground Level 145 Upper Heidelberg Road, IVANHOE' UNION ALL
SELECT 'Shop 1 Ground Level 1 Flintoff Street, GREENSBOROUGH'
)
SELECT
LEFT(
RIGHT(address,LEN(address)-CHARINDEX('Level',address,0)-5),
CHARINDEX(' ',RIGHT(address,LEN(address)-CHARINDEX('Level',address,0)-5),0)
) Building_number,
LEFT(
RIGHT(
RIGHT(address,LEN(address)-CHARINDEX('Level',address,0)-5),
LEN(RIGHT(address,LEN(address)-CHARINDEX('Level',address,0)-5))-CHARINDEX(' ',RIGHT(address,LEN(address)-CHARINDEX('Level',address,0)-5),0)
),
CHARINDEX(
',',
RIGHT(
RIGHT(address,LEN(address)-CHARINDEX('Level',address,0)-5),
LEN(RIGHT(address,LEN(address)-CHARINDEX('Level',address,0)-5))-CHARINDEX(' ',RIGHT(address,LEN(address)-CHARINDEX('Level',address,0)-5),0)
)
,
0
)-1
) Street_address
FROM your_table
In case if there are possibilities of not having a Comma(,) after the building number, You can use this following logic-
SELECT
LEFT(
RIGHT(address,LEN(address)-CHARINDEX('Level',address,0)-5),
CHARINDEX(' ',RIGHT(address,LEN(address)-CHARINDEX('Level',address,0)-5),0)
) Building_number,
LEFT(
RIGHT(
RIGHT(address,LEN(address)-CHARINDEX('Level',address,0)-5),
LEN(RIGHT(address,LEN(address)-CHARINDEX('Level',address,0)-5))-CHARINDEX(' ',RIGHT(address,LEN(address)-CHARINDEX('Level',address,0)-5),0)
),
IIF(
CHARINDEX
(
',',
RIGHT(
RIGHT(address,LEN(address)-CHARINDEX('Level',address,0)-5),
LEN(RIGHT(address,LEN(address)-CHARINDEX('Level',address,0)-5))-CHARINDEX(' ',RIGHT(address,LEN(address)-CHARINDEX('Level',address,0)-5),0)
)
,
0
) = 0 ,
LEN(
RIGHT(
RIGHT(address,LEN(address)-CHARINDEX('Level',address,0)-5),
LEN(RIGHT(address,LEN(address)-CHARINDEX('Level',address,0)-5))-CHARINDEX(' ',RIGHT(address,LEN(address)-CHARINDEX('Level',address,0)-5),0)
)
)
,
CHARINDEX
(
',',
RIGHT(
RIGHT(address,LEN(address)-CHARINDEX('Level',address,0)-5),
LEN(RIGHT(address,LEN(address)-CHARINDEX('Level',address,0)-5))-CHARINDEX(' ',RIGHT(address,LEN(address)-CHARINDEX('Level',address,0)-5),0)
)
,
0
)-1
)
) Street_address
FROM your_table
Output is-
Building_number Street_address
145 Upper Heidelberg Road
1 Flintoff Street