Toon posts:

Mysql query en niet gevonden woorden met hoofdlett

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

ik heb een reaar probleem. De onderstaande query kan tellen hoe vaak het woord 'search' voorkomt in tabel ARTICLES voor attribuut 'txt'

select id, ((length(A.txt)-length(replace(A.txt,'search','')))/length('search'))
as hit_search from ARTICLES A where
(((length(A.txt)-length(replace(A.txt,'search','')))/length('search')))!=0

Het resultaat kan zijn:

id hit_search
----------------------
144 8 (de text met id=144 bevat 'search'
8 keer)
192 3
2342 1
etc..

Het gekke is dat wanneer het veld 'txt' het woord 'Search' bevat met een hoofdletter (b.v. 'Search', 'seaRCh' etc..) dan wordt hij niet gevonden. Ook niet als je in de query dezelfde hoofdletters gebruikt.

Hoe kan dit???? MySQL is default toch case insensitive?

Ik heb UCASE(), LOWER() etc al geprobeerd. resultaten daarvan waren onverklaarbaar. (Wel gevonden echter gevonden resultaat voor 'txt' = null :?

alle hulp welkom,
Martijn

  • Tsjipmanz
  • Registratie: Oktober 2000
  • Laatst online: 13-05 14:52

Tsjipmanz

Der Rudi ist da

Ik zal wel s even kijken of ik wat kan vinden, al moet ik zeggen dat je er een gekunstelde manier van tellen op nahoudt! :)

edit:

Kan t zo niet vinden. Je kan beter met RegExp's werken lijkt me

There's no such thing as a mistake, just happy accidents - Bob Ross
Relaxte muziek: altijd okee!
- Soulseek rulez -


  • Wacky
  • Registratie: Januari 2000
  • Laatst online: 30-08 10:27

Wacky

Dr. Lektroluv \o/

of doe dit:
PHP:
1
2
3
<?
blah blah WHERE txt='search' or txt='Search'
?>

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21-09 18:16

Creepy

Tactical Espionage Splatterer

code:
1
2
3
select count(*)
from articles
where LOWERCASE(txt) like '%search%'

zoiets???

geen idee of LOWERCASE klopt... maar hij zou gewoon het aantal rows terug moeten geven waarvan search voorkomt in txt

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
count(*D telt het aantal records waarin het woord 'search' voorkomt. Mijn query telt het aantal keer dat search per record voorkomt.
Dit maakt het mogelijk om per gevonden record weer te geven hoe vaak het woord voor dat record is gevonden.

Het probleem is echter dat de query geen Search, seArch o.i.d. kan vinden.

:?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

select bla from bla where text LIKE 'search';

Werkt dat niet?

Verwijderd

Topicstarter
dat gaat goed.. gek genoeg....
Ik ben bang dat mijn exotische tellertje niet helemaal doet wat ie zou moeten doen... :(
Pagina: 1