CONSULTA SQL COM PARTE DO CAMPO
Bom dia pessoal.
tenho que montar um relatório de defeitos apresentados em produtos.
Para isso preciso fazer um select com group by pelo campo código do produto.
Minha duvida é: Como excluir os dosi primeiros caracteres do campo.
Vou explicar como o campo codigo é composto para entenderem melhor:
O campo código do produto é composto por 2 caracters representando o estado, 4 caracteres numéricos e mais 2 caracteres representando o tipo. EX.: [Ô]SP1234CP[Ô].
Só que eu preciso agrupar apenas pelo codigo do meio e tipo, ignorando o Estado, preciso agrupar apenas o [Ô]1234CP[Ô] de todos registros.
Tem como fazer isso por um select???
tenho que montar um relatório de defeitos apresentados em produtos.
Para isso preciso fazer um select com group by pelo campo código do produto.
Minha duvida é: Como excluir os dosi primeiros caracteres do campo.
Vou explicar como o campo codigo é composto para entenderem melhor:
O campo código do produto é composto por 2 caracters representando o estado, 4 caracteres numéricos e mais 2 caracteres representando o tipo. EX.: [Ô]SP1234CP[Ô].
Só que eu preciso agrupar apenas pelo codigo do meio e tipo, ignorando o Estado, preciso agrupar apenas o [Ô]1234CP[Ô] de todos registros.
Tem como fazer isso por um select???
Primeiro você fala qual banco de dados está usando, depois a gente pode dizer se tem como e qual comando usar.
Como o OCELOT falou, isso vai variar de banco para banco de dados. Um exemplo em SQL Server
SELECT
RIGHT(campo, 6) AS trecho_campo
FROM
tabela
WHERE
RIGHT(campo, 6) = [ô]1234CP[ô]
GROUP BY
trecho_campo
No exemplo acima, eu assumi que o comprimento do código será sempre de 6 caracteres, porem, caso o seu campo tenha um valor variável (que acredito que possa ocorrer), segue um novo exemplo:
SELECT
RIGHT(campo, LENGHT(campo) - 2) AS trecho_campo
FROM
tabela
WHERE
RIGHT(campo, LENGHT(campo) - 2) = [ô]12345678AB[ô]
GROUP BY
trecho_campo
Neste caso, eu pego o tamanho da string do campo, e subtraio dois caracteres, com isso, a função RIGHT, irá pegar o resto. Exemplo: Assumindo que o campo tenha o valor DF12345678AB, a string tem 12 caracteres, quando usado a função LENGHT, mas depois que tirarmos os dois primeiros caracteres da sigla da UF (que no caso é DF), este irá ficar com 8 caracteres, sendo retornado a string 12345678AB.
Espero ter ajudado, porem, se puder informar o tamanho do campo, se o código tem um tamanho constante ou não, e qual o banco de dados que está utilizando, podemos dar uma solução mais personalizada.
SELECT
RIGHT(campo, 6) AS trecho_campo
FROM
tabela
WHERE
RIGHT(campo, 6) = [ô]1234CP[ô]
GROUP BY
trecho_campo
No exemplo acima, eu assumi que o comprimento do código será sempre de 6 caracteres, porem, caso o seu campo tenha um valor variável (que acredito que possa ocorrer), segue um novo exemplo:
SELECT
RIGHT(campo, LENGHT(campo) - 2) AS trecho_campo
FROM
tabela
WHERE
RIGHT(campo, LENGHT(campo) - 2) = [ô]12345678AB[ô]
GROUP BY
trecho_campo
Neste caso, eu pego o tamanho da string do campo, e subtraio dois caracteres, com isso, a função RIGHT, irá pegar o resto. Exemplo: Assumindo que o campo tenha o valor DF12345678AB, a string tem 12 caracteres, quando usado a função LENGHT, mas depois que tirarmos os dois primeiros caracteres da sigla da UF (que no caso é DF), este irá ficar com 8 caracteres, sendo retornado a string 12345678AB.
Espero ter ajudado, porem, se puder informar o tamanho do campo, se o código tem um tamanho constante ou não, e qual o banco de dados que está utilizando, podemos dar uma solução mais personalizada.
Só tem um erro no seu exemplo NETMANIA, no SQL Server você não pode usar alias de campos no GROUP BY, o seu exemplo funcionaria repetindo o RIGHT no GROUP BY
SELECT
RIGHT(campo, 6) AS trecho_campo
FROM
tabela
WHERE
RIGHT(campo, 6) = [ô]1234CP[ô]
GROUP BY
RIGHT(campo, 6)
SELECT
RIGHT(campo, 6) AS trecho_campo
FROM
tabela
WHERE
RIGHT(campo, 6) = [ô]1234CP[ô]
GROUP BY
RIGHT(campo, 6)
Estou usando o MySQL.
Já funcionou com o primeiro exemplo pois o campo tem o mesmo tamanho em todos registros
Obrigado a todos.
Já funcionou com o primeiro exemplo pois o campo tem o mesmo tamanho em todos registros
Obrigado a todos.
Tópico encerrado , respostas não são mais permitidas