Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Zeichenanzahl im String [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Zeichenanzahl im String


 
oms
21-01-2003, 15:03 
 
Hallo ihr!
Kennt jemand eine Funktion in mysql, mit der man bestimmte Zeichen in einem String zählen kann? :rolleyes:

Beispiel:
1-3-7-12-98

Rauskommen muß 4.

Danke schonmal.
Gruß oms

 
Abraxax
21-01-2003, 23:00 
 
Rauskommen muß 4.
ich gehe mal von der suche nach '-' aus.... :)

hatte heute mal ein wenig gesucht, aber auch nichts gefunden. :(

habe aber mal noch einen kumpel gefragt, wenn ich/DU glück habe/HAST, sollte ich morgen eine antwort haben.... :)

ansonsten hätte ich schon mal einen alternativvorschlag, wenn es über die DB nicht direkt gehen sollte.

lies das ganze feld ein und counte die vorkommensanzahl mit hilfe von php.
ist zwar nicht schön, aber wohl die letzte möglichkeit, wenn es nicht in der DB funktionieren sollte.

hier schon mal ein paar links

http://de.php.net/manual/de/function.count-chars.php

http://de.php.net/manual/de/function.explode.php
$array = explode ("-", $deinstring);
nach dem explode hat man mit count($array)-1 die anzahl der zeichen.

das hier müsste aber der ideale weg (ohne DB) sein
http://de.php.net/manual/de/function.substr-count.php

 
oms
22-01-2003, 08:57 
 
Ja, ich meinte die "-", sorry. :D
Mit PHP, klar, kein Problem. Ich bin hier bloß gerade beim Code optimieren und wollte die DB möglichst viel, wenn nicht sogar alles machen lassen.

Wäre cool, wenn du die Variante mit MySQL rausbekommen würdest.:grin:
Geht da nicht irgendwas mit MATCH etc. ?

Gruß oms

 
Abraxax
22-01-2003, 09:27 
 
ja. da bin ich auch drübergestolpert gewesen. der liefert dir nur nicht die anzahl. :( wäre ja zu einfach gewesen .... :D


MATCH (col1,col2,...) AGAINST (expr)
MATCH (col1,col2,...) AGAINST (expr IN BOOLEAN MODE)
MATCH ... AGAINST() is used for full-text search and returns relevance - similarity measure between the text in columns (col1,col2,...) and the query expr. Relevance is a positive floating-point number. Zero relevance means no similarity. MATCH ... AGAINST() is available in MySQL version 3.23.23 or later. IN BOOLEAN MODE extension was added in version 4.0.1. For details and usage examples, see section 6.8 MySQL Full-text Search.

er zeigt dir nur das vorkommen an. mehr leider nciht.
http://www.mysql.com/doc/en/Fulltext_Search.html

die antwortmail ist übrigens da. ist aber nicht gerade sehr vielversprechend.... :(

hab leider keine gebrauchsfertige lösung parat...

http://www.mysql.com/doc/en/String_functions.html

oder

http://www.mysql.com/doc/en/String_comparison_functions.html

und dann vielleicht was mit REGEXP... viel Spass.


eigentlich schade, oder .... :(

 
oms
22-01-2003, 09:38 
 
@Abraxax
Danke für die Bemühungen.

Mit FIND_IN_SET könnte ich das hinbiegen. Muß ich halt nur die "-" durch "," ersetzen. Das müßte pfunzen, da mir die letzte Zahl im String zur Verfügung steht.

Aber so richtig glücklich bin ich damit auch nicht. :mad:

Laßt meinen Hoster bloß möglichst schnell auf MySQL >=4.0 updaten. Dann könnte ich endlich Unterabfragen benutzen und bräuchte nicht diese abgef**kte Variante wählen. Aber darauf kann ich wohl noch ein kleine Ewigkeit warten...http://www.smiley-smilies.de/azcrying.gif

oms

 
Abraxax
22-01-2003, 09:49 
 
deine suche war ja bisher nach -

wenn du FIND_IN_SET nimmst, musst du ja die zahlen durch komma ersetzen, wenn ich das richtig verstanden habe, um auf die 4 zu kommen.
das ist es besitmmt auch nciht. oder?

 
oms
22-01-2003, 10:01 
 
Ob 5 oder 4 ist eigentlich egal, Hauptsache der String mit einem "," mehr bekommt ne höhere Zahl. Im Prinzip hab ich eine Zeichenkette bestehend aus Zahlen, die durch irgendein Zeichen getrennt werden. Gegeben ist mir immer die letzte Zahl. Ich brauche nur die Anzahl der Zahlen im String.

Müßte eigentlich klappen...

SELECT FIND_IN_SET("98","1,3,7,12,98"); #Beispiel von oben


erhofftes Resultat: 5

 
Abraxax
22-01-2003, 10:37 
 
ok. mir war nicht bekannt, das du IMMER DIE LETZTE zahl kennst.

so müsste es klappen, aber nur, wenn dir wirklich die letzte zahl im SET bekannt ist...... ;)

 
oms
22-01-2003, 11:02 
 
Jo, es pfunzt. Jetzt kann ich endlich dieses blöde Menü fertigstellen. :p

thx@Abraxax

Gruß oms

 
Campus
22-01-2003, 12:40 
 
also wer jetzt das nicht nur mit komma trennt, der kann auch diese variante in betracht ziehen:
select (length(spalte)-length(replace(spalte,'-',''))) as zeichenanzahl...

 
MelloPie
22-01-2003, 12:49 
 
Also für das Problem ist doch find_in_set völlig falsch, viel zu viele prämissen.
Die Lösung von Campus erscheint viel logischer, nur eine prämisse: - wird nur als trennzeichen verwendet.

 
oms
22-01-2003, 12:51 
 
Aber die Zahlen im String können doch unterschiedlich viele Ziffern haben...

 
Campus
22-01-2003, 12:58 
 
wat ?

 
oms
22-01-2003, 13:00 
 
:goth:
Sorry, der Groschen ist eben reichlich spät gefallen. Nicht mein Tag heute. Die Methode ist super. *peinlich*
Danke

 
Abraxax
22-01-2003, 13:27 
 
da muss ich oms beipflichten. die variante von campus ist wohl der idealste weg. :respekt:

und wieder was gelernt ... :rolleyes:

 
Campus
22-01-2003, 13:51 
 
danke danke, meine schüler... :p

 
goth
22-01-2003, 14:50 
 
Original geschrieben von oms
@Abraxax

...

Laßt meinen Hoster bloß möglichst schnell auf MySQL >=4.0 updaten. Dann könnte ich endlich Unterabfragen benutzen und bräuchte nicht diese abgef**kte Variante wählen. Aber darauf kann ich wohl noch ein kleine Ewigkeit warten

...

oms

Da wirst Du wohl noch warten dürfen ... Unterfrage gibt es erst ab version 4.1 ... und die ist frühes Alpha (und das auch nur weil's vor Alpha nichts gibt) ... gibt offiziell nicht mal die Möglichkeit eines Downloads ... !

 
oms
22-01-2003, 15:04 
 
Da wirst Du wohl noch warten dürfen ... Unterfrage gibt es erst ab version 4.1 ...
...schlimm genug.

Aber ich habe irgendwann mal gelernt, daß man sehr viele subqueries alternativ auch mit joins darstellen kann. Weiß jemand, wo da die Grenzen sind? :huep:

 
MelloPie
22-01-2003, 15:06 
 
@nicht zufrieden mit MySQL? Meistens sinds die, die davor sitzen.

 
oms
22-01-2003, 15:10 
 
@MelloPie: Bin mit MySQL mehr als zufrieden...

Bin bloß eben in letzter Zeit auf Abfrage-Probleme gestoßen, bei denen man die Grenzen von MySQL (oder eben die meines Verstandes) streift.

Mit joins ist ja nunmal nicht alles möglich.

oms

 
trekkie2003
16-09-2003, 20:38 
 
Tach Leutz,
warum verringerst du bei dem Zählen des Arrays die Anzahl um eins...
Es kommt zwar das richtige Ergebniss raus aber ich habe nicht kapiert wieso...wäre net wenn mir jemand das erklären könnte!

tschau und thx
trekkie2003


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:14 Uhr.