Eu crei um banco de dados chamado teste, com uma tabela de teste, para conseguir testar o comando CONTAINS do MySQL
Campos Tabela Teste
id
name
phone
email
address
keywords
Consulta SQL para pesquisar em todos os campos da tabela pela palavra ‘universidade’
SELECT * FROM teste WHERE CONTAINS(*, 'universidade');
Mas não sei o que está acontecendo, toda hora aparece a seguinte mensagem no MySQL Query Browser
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*, 'universidade')' at line 1
Eu estou seguindo esse tutorial que eu encontrei no google:
Meu caro, a sintaxe está errada, o próprio SQL te diz isso.
Você não possui uma coluna com o nom asterisco.
Este é o problema. O MYSQL não reconhece essa instrução como válida.
Se quer encontrar todos os registros com ‘universidade’, troque por
SELECT * FROM teste WHERE name like '%universidade%' OR email like '%universidade%' OR address like '%universidade%';
Assim você cobre todos os campos que podem ter universidade.
Embora a linguagem SQL seja a base para a maioria dos bancos de dados, ela pode sofrer variações.
existir existi sim pq qdo eu faço a seguinte consulta por exemplo
SELECT * FROM teste WHERE CONTAINS(keywords, 'universidade');
não dá nenhum erro, mas drsmachado vc ou alguém sabe me dizer porque essa consulta não retorna nada
sendo que a minha tabela de teste tem a palavra ‘universidade’ no campo keywords?
Não, não existe a coluna na sua tabela com o nome . O que acontece quando tu faz o “select * from…” ele entende o * como me traga todas as colunas de todas as tabelas nesse select, assim como funcionaria "select tabela1. from tabela1, tabela2 where …" nesse caso ele traria todas as colunas da tabela 1 apenas. Agora na segunda parte, que ele não entede o CONTAINS(*, ‘universidade’); , o mysql não entende isso, que seria algo como me retorne todos os registros que contem ‘universidade’ em qualquer campo. Tu precisa referenciar cada coluna e sua condição, isso é ANSI SQL, e caso o SQLServer implemente esse tipo de busca, é particularidade dele.
Olá jaziel.rc, era isso msm que eu estava querendo
Porém eu fiz um teste apenas com o campo keywords e o que eu achei estranho é que funcionou mas não retornou nenhum resultado
SELECT * FROM teste WHERE CONTAINS(keywords, 'universidade');
Essa consulta era pra retornar todos os registros que contenham a palavra ‘universidade’ no campo keywords, mas não retornou nenhum registro,
eu tenho sim 3 registros com o campo keywords com a palavra ‘universidade’.
Será que vc jaziel.rc ou alguém poderia me dar uma ajuda?
A função CONTAINS do Mysql é uma função específica para valores geométricos. Contains (v1,v2) verifica se v1 contem v2. Veja trecho do Manual:
“12.17.5.4.2. Functions That Test Spatial Relationships Between Geometries … Contains(g1,g2)
Returns 1 or 0 to indicate whether g1 completely contains g2. This tests the opposite relationship as Within().”