SELECT de um Array dentro de string armazenado pelo scriptcase

Prezados,

Eis o cenário:

TABELA tipo_contatos
id = 1; descrição = cliente
id = 2; descrição = fornecedor
id = 3; descrição = funcionário

TABELA contatos
id = 1; nome = fulano; tipo_contato = “1; 2”
id = 2; nome = ciclano; tipo_contato = “1; 2; 3”
id = 3; nome = beutrano; tipo_contato = “1”

Eis a dúvida:

Criei um FORMULÁRIO de CONTATOS no scriptcase, vinculei o campo contatos.tipo_contato (varchar) à tabela tipo_contatos.id através de um checkbox. Ou seja, ao criar um cliente, o formulário de CONTATOS oferece as opções de preenchimento: “nome do cliente” (1 campo texto) e “tipo do contato” (3 checkboxes, pois é o resultado de um lookup da tabela tipo_contatos).

Quando gravo os dados na tabela de contatos através do formulário, o campo contatos.tipo_contato é preenchido como um array separado por ponto-e-vírgula.

Minha dúvida:

Preciso fazer um SELECT que me retorne se o contato é do tipo “fornecedor” (da tabela tipo_contatos.id = 2). Usei o INSTR dentro do WHERE mas, detectei um problema: se eu tenho uma lista de ID’s como: “1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12” por exemplo, o resultado do INSTR é “duplo”, ou seja, ele vai detectar duas vezes o número 2, pois este caractere “2” está na quarta posição e também na última posição.

Sugestões de como localizar corretamente esta informação usando um SELECT no MySQL?

utilize o separador virgula em vez do ponto e virgula

tente utilizar a clausula DISTINCT no id da contato.