Suchen
Inside Forum
Nützliche Links




 
phpforum.de bei Facebook
 
phpforum.de bei Twitter
 

Zurück   PHP Forum: phpforum.de > Datenbanken > Datenbanken

Datenbanken Alles rund um MySQL, MariaDB, PostgreSQL o.ä. und die NoSQL-Datenbanken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 06.12.2017, 04:48
dark_overlord dark_overlord ist offline
Engagierter Besucher
 
Registriert seit: 31.07.2012
Beiträge: 142
Standard durchsuchtes Wort vor dem Vergleich verändern?

Hi,
ich habe in der Mysql-Datenbank in einer Spale "Column" Arrays abgelegt durch implode("||",$Arr), also Aufzählungen der Form "affe||pferd||pferdefleisch".

Nun möchte ich auf ein ganzes Wort prüfen (ohne Teilworte zurückzuerhalten).

Nun könnte ich das mit
SQL Quellcode:
`Column` LIKE "%||Pferd||%" OR `Column` LIKE "Pferd||%" OR `Column` LIKE "%||Pferd" OR `Column` LIKE "Pferd"

Total bescheuert, schon allein wegen Wildcard am Anfang und riesig inperformant.

Kann ich vor dem Prüfen dem durchsuchten Wort an Anfang und Ende einfach zwei Balken anfügen? Also sowas in der Art:
SQL Quellcode:
'||'.$Column.'||' LIKE "%||Pferd||%"


Gruß
Mit Zitat antworten
  #2  
Alt 06.12.2017, 10:15
Don T. Worry Don T. Worry ist offline
Engagierter Besucher
 
Registriert seit: 29.03.2012
Beiträge: 503
Standard AW: durchsuchtes Wort vor dem Vergleich verändern?

Am einfachsten wäre die Datenbank zu normalisieren, dann hättest du diese Probleme gar nicht erst und könntest außerdem noch Indizes nutzen.
__________________
“Just think of how stupid the average person is, and then realize half of them are even stupider!” [George Carlin]

“There is only one god, and His name is Death. And there is only one thing we say to Death: "not today".” [Syrio Forel]
Mit Zitat antworten
  #3  
Alt 06.12.2017, 12:17
dark_overlord dark_overlord ist offline
Engagierter Besucher
 
Registriert seit: 31.07.2012
Beiträge: 142
Standard AW: durchsuchtes Wort vor dem Vergleich verändern?

ja das weiß ich. es handelt sich aber tatsächlich um reine Aufzählung völlig unterschiedlicher Art. Keine Objekte, einfach Worte und Zahlen.
Mit Zitat antworten
  #4  
Alt 06.12.2017, 12:58
hellbringer hellbringer ist gerade online
Forum-Mitarbeiter
 
Registriert seit: 27.03.2008
Beiträge: 30.916
Standard AW: durchsuchtes Wort vor dem Vergleich verändern?

https://dev.mysql.com/doc/refman/5.7...on_find-in-set
Mit Zitat antworten
  #5  
Alt 06.12.2017, 22:46
akretschmer akretschmer ist offline
Engagierter Besucher
 
Registriert seit: 25.09.2013
Beiträge: 1.117
Standard AW: durchsuchtes Wort vor dem Vergleich verändern?

Zitat:
Zitat von Don T. Worry Beitrag anzeigen
Am einfachsten wäre die Datenbank zu normalisieren, dann hättest du diese Probleme gar nicht erst und könntest außerdem noch Indizes nutzen.
Alternativ: eine Datenbank nutzen, die damit umgehen kann. PostgreSQL könnte das als ein Array handeln, welches Du mittels GIN-Index dann auch indexbasiert und damit entsprechend schnell durchsuchen kannst. MySQL ist von solchen Features vermutlich noch einige Jahrzehnte entfernt.
__________________
--
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Mit Zitat antworten
  #6  
Alt 07.12.2017, 11:43
dark_overlord dark_overlord ist offline
Engagierter Besucher
 
Registriert seit: 31.07.2012
Beiträge: 142
Standard AW: durchsuchtes Wort vor dem Vergleich verändern?

Ich werde es wohl damit machen:
SQL Quellcode:
...WHERE FIND_IN_SET('SearchWord' ,REPLACE(COLUMN, '||', ',') )

Zum Glück habe ich nur alphanumerische Worte ohne Komma, da entfällt das vorherige Maskieren
Mit Zitat antworten
  #7  
Alt 07.12.2017, 19:26
Zeichen32 Zeichen32 ist offline
Engagierter Besucher
 
Registriert seit: 15.12.2009
Beiträge: 956
Standard AW: durchsuchtes Wort vor dem Vergleich verändern?

Wenn die Spalte vom Typ Json wäre, könnte man auch mit MySQL nach Werten suchen:

https://dev.mysql.com/doc/refman/5.7...functions.html
__________________
echo "Zeichen";
Mit Zitat antworten
  #8  
Alt 08.12.2017, 07:34
dark_overlord dark_overlord ist offline
Engagierter Besucher
 
Registriert seit: 31.07.2012
Beiträge: 142
Standard AW: durchsuchtes Wort vor dem Vergleich verändern?

oh danke für den hinweis, ich wusste gar nicht dass es in mysql einen json datentyp gibt.
Mit Zitat antworten
  #9  
Alt 08.12.2017, 09:26
akretschmer akretschmer ist offline
Engagierter Besucher
 
Registriert seit: 25.09.2013
Beiträge: 1.117
Standard AW: durchsuchtes Wort vor dem Vergleich verändern?

Zitat:
Zitat von dark_overlord Beitrag anzeigen
oh danke für den hinweis, ich wusste gar nicht dass es in mysql einen json datentyp gibt.
Nun in ganz neuen Versionen und da auch nur halbherzig. Indexierung ist nicht bzw. wohl nur über krude Umwege möglich. Aber man ist auf dem Weg ...
__________________
--
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Mit Zitat antworten


Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu
Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Ein wort übergeben... dj-crx PHP 3 12.05.2010 16:01
wort ersetzen andy-ty PHP 2 06.06.2007 11:55
"Wort (1)" zu "Wort (eins)" umwandeln Dilandau PHP 2 21.01.2007 18:40
Ein Wort nur ein mal Markieren Nemesis2010 PHP 3 12.05.2006 16:24
Wort-zensur :o Groog PHP 4 05.05.2004 18:25


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:48 Uhr.


Powered by vBulletin® Version 3.8.8 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Powered by NuWiki v1.3 RC1 Copyright ©2006-2007, NuHit, LLC