Jump to content


MySQL un %LIKE%


9 replies to this topic

#1 lidotajs

    Māceklis

  • Reģistrētie lietotāji
  • Pip
  • 6 posts

Posted 2009.01.21 23:08

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.

#2 kechums

    Daudzsološais profiņš

  • Reģistrētie lietotāji
  • PipPipPip
  • 187 posts

Posted 2009.01.21 23:18

Šķiet, ka vajag norādīt enkodingu, lai kverijs atšķirtu visus simbolus, tagad nolasa tikai "abols", bez mīkstinājumiem un citiem šitiem. SET NAMES utf8
Mani dažnedažādie pieraksti:
http://k4y.lv

#3 Grey_Wolf

    Koda dievs

  • Reģistrētie lietotāji
  • PipPipPipPipPip
  • 4535 posts

Posted 2009.01.22 00:46

View Postkechums, on 21.01.2009 23:18, said:

Šķ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, 2009.01.22 00:46.


#4 lidotajs

    Māceklis

  • Reģistrētie lietotāji
  • Pip
  • 6 posts

Posted 2009.01.22 08:55

Piedodiet: Izmantoju MySQL 5.0, kodējums utf8. Pagaidām laikam vienīgais variants labot to utf-8 enkoding failu.

#5 Grey_Wolf

    Koda dievs

  • Reģistrētie lietotāji
  • PipPipPipPipPip
  • 4535 posts

Posted 2009.01.22 11:13

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, 2009.01.22 11:14.


#6 lidotajs

    Māceklis

  • Reģistrētie lietotāji
  • Pip
  • 6 posts

Posted 2009.01.22 11:52

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, 2009.01.22 11:55.


#7 Grey_Wolf

    Koda dievs

  • Reģistrētie lietotāji
  • PipPipPipPipPip
  • 4535 posts

Posted 2009.01.22 12:17

View Postlidotajs, on 22.01.2009 11:52, said:

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, 2009.01.22 12:18.


#8 lidotajs

    Māceklis

  • Reģistrētie lietotāji
  • Pip
  • 6 posts

Posted 2009.01.22 12:44

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, 2009.01.22 12:46.


#9 Grey_Wolf

    Koda dievs

  • Reģistrētie lietotāji
  • PipPipPipPipPip
  • 4535 posts

Posted 2009.01.22 13:26

View Postlidotajs, on 22.01.2009 12:44, said:

Ā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 ..

#10 lidotajs

    Māceklis

  • Reģistrētie lietotāji
  • Pip
  • 6 posts

Posted 2009.01.23 09:39

paldies, cenšos tagad tajā iebraukt