Oi Diogo! Como vai?
A ideia é sempre de padronizar os dados para que esse tipo de coisa não aconteça. Mas entendo, na vida real, muitas bases são complexas, sua manutenção muitas vezes ocorre com pessoas diferentes, e muitas vezes esse tipo de coisa pode ocorrer devido a falta de uma documentação.
Entretanto, quando os dados não são padronizados, esse tipo de solução não é adequado, pois a cada nova inserção, a query pode não contemplar todas as linhas e gerar algum tipo de erro.
Quando for padronizado, você pode adaptar a query acima mudando o separador, o numero ao lado dele, e quantidade de posições que você quer adicionar ou subtrair.
O foco é sempre de planejar nosso insumo de maneira bem padronizada.
Embora não seja boa prática, existem soluções sim para o caso que você apontou. Existem diversos comandos em T-SQL que você pode combinar de acordo com o que você precisa.
Naõ tenho uma solução pronta para você agora. Mas posso te apontar alguns caminhos.
Você pode tentar algo usando o string_split, que te permite adicionar vários tipos de separações específicas.
https://docs.microsoft.com/pt-br/sql/t-sql/functions/string-split-transact-sql?view=sql-server-ver15
Você pode também usar o trim, o replace e o concat para primeiramente padronizar seus valores, e depois aplicar o substring-findstring (uma vez que os dados estejam no padrão adequado):
https://docs.microsoft.com/pt-br/sql/t-sql/functions/trim-transact-sql?view=sql-server-ver15
https://docs.microsoft.com/pt-br/sql/t-sql/functions/replace-transact-sql?view=sql-server-ver15
https://docs.microsoft.com/pt-br/sql/t-sql/functions/concat-transact-sql?view=sql-server-ver15
Espero que te ajude! Bons Estudos =)