Campo com delimitador

(jcesarml) #1

Boa tarde

Criei um campo com delimitador do tipo “múltiplos valores” e agora estou tentando fezer uma consulta com gráfico, sendo que no banco existe registro como “2;3;5;9” sem as aspas.
Nos gráficos não estou conseguindo compilar as informações separando os valores individualmente.

Alguém saberia fazer isso?

Agradeço.

(Régis Matos) #2

Você já tentou em x de deixar tudo em um campo…

Fazer o relacionamento N:N no banco ?

Facilita bastante…

(jcesarml) #3

O banco é antigo. Desse jeito funcionaria, mas a minha realidade não é essa, eu preciso fazer do jeito apresentado, mas mesmo assim agradeço.

(Régis Matos) #4

olha eu acho mais rápido vc usar o explode() e correr toda tabela com um while e transformar seu campo em uma tabela N:N…

Eu já tive um problema parecido e consegui resolver ± assim…

Pensa ai…

Agora se vc encontrar outra solução posta ai… T+

(jcesarml) #5

Parece que tem uma forma de fazer isso através de instrução SQL, algo do tipo substring, seria um tipo de split, mas estou fazendo testes, assim que eu descobrir postarei, pois alguém pode precisar no futuro.

(jcesarml) #6

Lembrando que tenho vários registros conforme esse exempo: “1;3;4;7” ou “4;5”, sendo no máximo até o número 8, portanto até 8 numerais (uma casa cada) com delimitador.

Eu estou tentando através de instruções SQL e acho que estou quase chegando no resultado esperado.
Fiz o seguinte:

SELECT SUBSTRING( campo , 1, 1 )
FROM tabela as teste
where SUBSTRING( campo , 1, 1 ) <> ‘’

Me retornou somente a primeira string de todos os registros, lembrando que tenho apenas respostas com números inteiros separados por delimitador ponto e vírgula. Testei como:

SELECT SUBSTRING( campo , 1, 3 )
FROM tabela as teste
where SUBSTRING( campo , 1, 3 ) <> ‘’

Me retornou a terceira string, pulando o ponto e vírgula. Isso que eu queria, mas e agora como eu uso o case ou o switch? Saberia me ajudar?

(jcesarml) #7

Alguém sabe fazer esse loop, para dar um select 8x em todos os registros, verificando possível string na primeira posição, segunda, terceira…oitava, pulando a pontuação?

Eu precisaria disso, mas em um select apenas

SELECT SUBSTRING( campo , 1, 1 )
FROM tabela as teste
where SUBSTRING( campo , 1, 1 ) <> ‘’

SELECT SUBSTRING( campo , 3, 1 )
FROM tabela as teste
where SUBSTRING( campo , 3, 1 ) <> ‘’

SELECT SUBSTRING( campo , 5, 1 )
FROM tabela as teste
where SUBSTRING( campo , 5, 1 ) <> ‘’

SELECT SUBSTRING( campo , 7, 1 )
FROM tabela as teste
where SUBSTRING( campo , 7, 1 ) <> ‘’