Jump to content
php.lv forumi

MySQL un %LIKE%


lidotajs

Recommended Posts

Ar php palīdzību uztaisu kveriju, $q ="SELECT * FROM tabula WHERE txt LIKE '%ābols%'". Izpildot šādu kveriju būtu jāparādās visiem ierakstiem, kuros ir frāze ābols.

Problēma ir tāda, ka man parādās arī ieraksti, kur frāze ir abols (bez garumzīmes) un otrādi.

Kā novērst šādu efektu?

Ja ir kādam kādas idejas, lūdzu padalieties.

Link to comment
Share on other sites

Šķiet, ka vajag norādīt enkodingu,

Nee Set NAMES neko nedos ...

Diemzeel Mysql 4.xxx versijas sajaa zinjaa ir padumjas :(

Iebuuvetais Latvieshu valodas UTF-8 meklesanas enkodings (atseviskjs fails) ir stipri vien nepilniigs ...

Sava laikaa tiku vinju labojis un papildinajis ...

P.S. ka vienmer Nav noradiits ne DB serveria versija ne siikak pateiksts kas un kaa ...

Edited by Grey_Wolf
Link to comment
Share on other sites

a kaads kodejums tev noraadiits pasai tabulai VAI tabulas kollonai ??

Sakot ar 4.1.xx var noraadiit preciizu kodejumu tabulu kasa tiks izmantota meklesanai ( un netikai )

Skaties peec Colation , ( 4.xx taas cl_latvian bija pabriesmiigs ... )

CREATE TABLE `rrr` (
`id` INT NOT NULL AUTO_INCREMENT ,
`tekstcc` TEXT CHARACTER SET utf8 COLLATE utf8_latvian_ci NOT NULL ,
PRIMARY KEY ( `id` )
) TYPE = MYISAM ;

P.S. pasam uz lokalaas stav 4.1.xx taa kaa nevaru parbaudiit .. bet nu risinajuma virziens ir saads...

Edited by Grey_Wolf
Link to comment
Share on other sites

Man visur ir salikts utf8_latvian_ci.

Bet tagat rakņājoties pa MySQL uzraku šādu lietiņu kā REGEXP. Vēl pagaidām neesmu iebraucis ar ko atšķirās LIKE no REGEXP, bet liekas ka strādā.

Vienīgi man neder jo REGEXP māk atšķirt lielos burtus no mazajiem.

Edited by lidotajs
Link to comment
Share on other sites

Vienīgi man neder jo REGEXP māk atšķirt lielos burtus no mazajiem.

Ja meklejama tabula nav liela tad ir risinajums: Parveido gan meklejamo , gan tabulas datus uz apakseejo VAI augsejo registru

--> tas ir lai abaas pusees buutu vienaads registrs

edit: domats meklesanas laikaa, tas ir iekljau to pasaa SELECT WHERE klauzaa...

Edited by Grey_Wolf
Link to comment
Share on other sites

kamēr rakstiju postu, atbilde arī parādijās :-) Today, 12:17

 

Varbūt es murgoju. bet tomēr, ja pēkšņi var izmantot REGEXP, tad:

 

$q ="SELECT * FROM tabula WHERE LOWER(txt) REGEXP LOWER('ĀBols')";

Šāds variants strādā, bet gan nezinu cik ilgs laiks ir nepieciešams, lai šādu brīnumu apstrādātu.

Ātrums ir svarīgs jo tabulā būs ap simts tūkstošiem ierakstu, un txt lauka garums ap 2 tūkstoži zīmju.

 

Ko sakat par šo?

Edited by lidotajs
Link to comment
Share on other sites

Ātrums ir svarīgs jo tabulā būs ap simts tūkstošiem ierakstu, un txt lauka garums ap 2 tūkstoži zīmju.

nu tad vispar nevajag izmantot %LIKE% bet mekleet citus risinajumus, jo pat neparveidojot Registru viss buus sameeraa lens ..

Skaties Uz FULLtext Pusi ..

Link to comment
Share on other sites

×
×
  • Create New...