CONSULTA SQL COM PARTE DO CAMPO

KOREIA 16/12/2013 11:31:23
#432129
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???
OCELOT 16/12/2013 14:06:43
#432139
Primeiro você fala qual banco de dados está usando, depois a gente pode dizer se tem como e qual comando usar.
NETMANIA 16/12/2013 14:26:03
#432140
Resposta escolhida
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.
OCELOT 16/12/2013 14:31:44
#432143
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)

KOREIA 16/12/2013 14:32:49
#432144
Estou usando o MySQL.

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