Odkazy: dibi | API reference

Forum: [česky] [english]

dibi fórum

tiny ‘n’ smart
database layer

Nejste přihlášen(a)

#1 před 6 měsíci

p.batko
Nový člen
Registrovaný: 28. 8. 2007
Příspěvky: 2

vyhledávání přesného textu v DB

Ahoj,

ve databázi mám uložený nějaký text:

Například

ID1 – testovací zařízení
ID2 – míchač těsta
ID3 – test z matematiky

když dám vyhledat pomocí operátoru LIKE test, dostanu všechny tři výsledky řádky.

Chtěl bych, aby mě to vrátilo pouze ID 3 protože obsahuje přesně slovo které požaduji.

Díky za radu.

 

#2 před 6 měsíci

paranoiq
Moderator
Registrovaný: 14. 11. 2006
Příspěvky: 381

Re: vyhledávání přesného textu v DB

pokud jde o MySQL, můžeš použít operátor RLIKE (REGEXP):

SELECT 'těsto' LIKE 'test%'; -- 1
SELECT 'testovací' LIKE 'test%'; -- 1
SELECT 'test ' LIKE 'test%'; -- 1
SELECT 'TEST ' LIKE 'test%'; -- 1

SELECT 'těsto' RLIKE '[[:<:]]test[[:>:]]'; -- 0
SELECT 'testovací' RLIKE '[[:<:]]test[[:>:]]'; -- 0
SELECT 'test ' RLIKE '[[:<:]]test[[:>:]]'; -- 1
SELECT 'TEST ' RLIKE '[[:<:]]test[[:>:]]'; -- 1

[[:<:]] je značka pro začátek slova, [[:>:]] je konec slova

víc tady: http://dev.mysql.com/…/regexp.html#…

 

#3 před 6 měsíci

mr.mac
Člen
Registrovaný: 28. 9. 2011
Příspěvky: 48

Re: vyhledávání přesného textu v DB

A nebo jednoduše vlož za test mezeru:

SELECT pole LIKE '%test %'
popř.
SELECT pole LIKE 'test %'

Editoval mr.mac (22. 11. 2011 18:02)

 

#4 před 6 měsíci

paranoiq
Moderator
Registrovaný: 14. 11. 2006
Příspěvky: 381

Re: vyhledávání přesného textu v DB

mr.mac napsal(a):

A nebo jednoduše vlož za test mezeru:

to by nefungovalo, pokud by hledané slovo bylo na konci řetězce

 

Zápatí