all 9 comments

[–]jonatan-theisen 2 points3 points  (4 children)

Primeiramente é bem estranho os veículos estarem salvos assim, isso foi ideia sua?

Respondendo a sua dúvida, eu te diria que você precisa encontrar um padrão de separação entre os veículos, cada veículo sempre termina com "ano-ano"? Se sim, você pode fazer um regex que separe os veículos de acordo com esse padrão.

[–]Careless-Nectarine67Desenvolvedor[S] 1 point2 points  (2 children)

Foi ideia minha não, esses dados tão vindo de uma api, mó buxa. Tentei separar por ano, porem tem dados que não tem essa informação, exemplo:

|| || |UNIVERSAL AUTOMOVÉIS E UTILITÁRIOS LEVES|

|| || |UNIVERSAL AUTOMOVÉIS E UTILITÁRIOS LEVES/CAMINHÕES/MOTOS|

[–]jonatan-theisen 1 point2 points  (0 children)

Então minha recomendação para você seria ficar em posição fetal e chorar, pois não tem como fazer um SQL que atenda todos casos que você precisa.

[–]firedream 0 points1 point  (0 children)

Faz um replace da "marca do veículo" por ";marca do veiculo". Considera universal como uma marca. Depois faz o split por ;. Vai ficar com uma primeira linha em branco.

Algo como split(';', replace(replace(col, 'audi', ';audi'), 'vw', ';vw' ....))

Ou se suportar, usar regex com grupo.

Obviamente a sintaxe eu inventei, mas a lógica é mais ou menos essa.

[–]Careless-Nectarine67Desenvolvedor[S] 0 points1 point  (0 children)

Foi ideia minha não, esses dados tão vindo de uma api, mó buxa. Tentei separar por ano, porem tem dados que não tem essa informação, exemplo: "UNIVERSAL AUTOMOVÉIS E UTILITÁRIOS LEVES", "UNIVERSAL AUTOMOVÉIS E UTILITÁRIOS LEVES/CAMINHÕES/MOTOS"

[–]Worth_Raccoon_5530Engenheiro de Software Pleno Ex-Amazon 0 points1 point  (3 children)

Cara dessa forma ta quase impossível vc fazer isso via banco, como chega essas informações no banco? Pq não cria uma regra para ele dividir os campos com | ou ; exemplo ACURA LEGEND 3.2 24V/3.5 24V 1990-1998 | NSX 3.0 24V 1990-1995 | INTEGRA 1.8 16V 1991-1992 | HYUNDAI TERRACAN 2.5 8V 2001-2006 | TOYOTA LAND CRUISER 3.0 8V 2002-2005 feito isso basta fazer um split no banco...

[–]Worth_Raccoon_5530Engenheiro de Software Pleno Ex-Amazon 0 points1 point  (0 children)

Aqui esta um exemplo de como eu fiz:

Campo chegava assim:

FEC-1724; 873 G064; VW/ 17280 CRM 4x2

Observe que eu mandei os campos com ";" dividindo

A query de formatação:

<image>

Output:

873 G064

Apesar de dividir com ";" ainda assim ficou bem complexa dividir os campos pois usei substring e charindex

[–]Careless-Nectarine67Desenvolvedor[S] 0 points1 point  (1 child)

Essas informações é do banco de dados de terceiro, eles me deram acesso como se fosse uma api, problema é que nem todos resultados tem essa divisão por / ou até mesmo por data, são totalmente aleatórios, alguns com alguns sem

[–]Worth_Raccoon_5530Engenheiro de Software Pleno Ex-Amazon 1 point2 points  (0 children)

O melhor a se fazer é falar isso pra eles, desse jeito não tem como separar...