Kimura 0 Denunciar post Postado Março 19, 2010 Olá, Tenho o seguinte problema: Uma coluna da tabela guarda valores separados por vírgula, parecido com estes: dar_1, cur_3, ece_8 Preciso fazer uma consulta, pegando todas as informações de somente 1 destes códigos. Ex.: O cara disse que o código que ele quer é cur_5, preciso consultar a tabela e pegar todos os resultados onde este cur_5 existe, indiferente se existe só ele ou está junto com outros. Compartilhar este post Link para o post Compartilhar em outros sites
Chrnos 30 Denunciar post Postado Março 19, 2010 O like não resolve o problema? select * from tabela where campo like '%cur_5%' []'s Compartilhar este post Link para o post Compartilhar em outros sites
Kimura 0 Denunciar post Postado Março 19, 2010 Olá Chrnos, Obrigado por responder, o LIKE resolve sim, mas fiquei pensativo na questão do desempenho. Se você tiver mais possibilidades me responda por gentileza. Lembrando que hoje a modelagem é esta. Vlw. Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Março 19, 2010 ... O correto seria você ter uma tabela a parte 1-N , campo multivalorado eh uma ofensa ao banco normalmente, e fazer join das duas num momento de consulta. Mas como você disse a modalgem eh essa, você poderia usar tambem match_against() e full text index. Compartilhar este post Link para o post Compartilhar em outros sites
Kimura 0 Denunciar post Postado Março 31, 2010 giesta, Perdoe reabrir este tópico, mas não consegui resolver definitivamente a situação. Como você mesmo falou é verdade, a modelagem deste banco está realmente uma porcaria, mas nem sempre podemos mexer em tudo, não é? Futuramente vou sugerir todas as correções possíveis. Vou dar um exemplo da situação real: - Um site possui um código particular, por exemplo cur_4 - Preciso puxar as notícias relativas a este site, mas as notícias estão sendo gravadas da forma multivalorada, ou seja, cur_4,cur_28,dar_80,cur_40,cur_48 etc. Se eu fizer um LIKE '%cur_4%' ele vai pegar tudo que se parece com isso, correto? até mesmo, cur_40, cur_48 dentre outros ... Preciso achar um solução pra esse problemão que me puseram na mão, preciso muito da tua força. Obs.: O REGEXP '[[:<:]]cur_4[[:>:]]' seria uma possível solução? Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Março 31, 2010 LIKE '%cur_4,%' Mas como já foi dito sem a separação devida quase toda solução vai esbarrar na questão da performance. Compartilhar este post Link para o post Compartilhar em outros sites
Kimura 0 Denunciar post Postado Março 31, 2010 Olá Motta, Pois é, a sua dica até funcionaria se tivesse sempre mais de um valor no campo, mas existem casos que só tenho um único valor, daí sem vírgula. Também estou preocupado com a questão performance, mas, por enquanto, não posso fazer nada, está acima de mim esta decisão. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites