Sql

Olá pessoal, bom dia a todos :D.

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:

Mas não está dando certo.

Será que alguém poderia me dar uma ajuda?

[]'s.

Bem, ele está usando o SQL Server no tutorial.

EDIT: Pesquisei rapidamente aqui e parece que o CONTAINS não existe no MySQL, não achei nada referente a ele no manual.

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.

Olá daveiga,

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?

[]'s.

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?

[]'s.

No www.w3scholl.com existe um ótimo tutorial de SQL. Vai te ajudar.

Em suma, para MySQL (e SQL ANSI) existem coringas.

A tua consulta retornaria resultados corretos se você seguisse o que instrui na minha primeira resposta.

Olá drsmachado,

com a sua resposta usando o LIKE deu certo, porém estava querendo usar o CONTAINS do MySQL.

Eu visitei o site da w3schools, eu fiz alguns teste e deu certo porém sempre que uso o comando ou coringa CONTAINS nada funciona.

Consulta no w3schools (http://www.w3schools.com/sql/sql_tryit.asp)

SELECT * FROM customers  WHERE CONTAINS(CompanyName, 'Vaffeljernet');

Erro do w3schools

Syntax error (missing operator) in query expression 'CONTAINS(CompanyName, 'Vaffeljernet')'.

Será que vc drsmachado ou alguém poderia me dar uma ajuda com esse CONTAINS do MySQL?

[]'s.

e ai cara conseguiu? estou precisando da mesma coisa

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().”