tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

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

před 8 lety

p.batko
Člen | 2

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.

před 8 lety

paranoiq
Člen | 388

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#…

před 8 lety

mr.mac
Člen | 87

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)

před 8 lety

paranoiq
Člen | 388

mr.mac napsal(a):

A nebo jednoduše vlož za test mezeru:

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