Deutsche Sortierung mit mysql
Lt. meinem Handbuch und Google sollte man in /etc/my.cnf character-sets_dir = /usr/share/mysql/charsets default-character-set = german1 hinzufügen, um eine dt. Sortierung zu erreichen. Dann läßt sich aber der mysql-Daemon nicht mehr starten. Wo trägt man das bei SuSE 8.2 ein? Al
Am Sonntag, 19. Oktober 2003 22:25 schrieb Al Bogner:
Lt. meinem Handbuch und Google sollte man in /etc/my.cnf character-sets_dir = /usr/share/mysql/charsets
... sets-dir ...
default-character-set = german1
hinzufügen, um eine dt. Sortierung zu erreichen. Dann läßt sich aber der mysql-Daemon nicht mehr starten.
Wo trägt man das bei SuSE 8.2 ein?
/etc/my.cnf [mysqld] ... -- Andreas
Am Sonntag, 19. Oktober 2003 22:37 schrieb Andreas Winkelmann:
Am Sonntag, 19. Oktober 2003 22:25 schrieb Al Bogner:
Lt. meinem Handbuch und Google sollte man in /etc/my.cnf character-sets_dir = /usr/share/mysql/charsets
... sets-dir ...
default-character-set = german1
hinzufügen, um eine dt. Sortierung zu erreichen. Dann läßt sich aber der mysql-Daemon nicht mehr starten.
Wo trägt man das bei SuSE 8.2 ein?
/etc/my.cnf [mysqld]
[mysqld] port = 3306 socket = /var/lib/mysql/mysql.sock skip-locking set-variable = key_buffer=16M set-variable = max_allowed_packet=1M set-variable = table_cache=64 set-variable = sort_buffer=512K set-variable = net_buffer_length=8K set-variable = myisam_sort_buffer_size=8M log-bin server-id = 1 # selber hinzugefügt sets_dir = /usr/share/mysql/charsets default-character-set = german1 funktioniert nicht. Al
Moin, Al Bogner schrieb am Montag, 20. Oktober 2003 um 08:45:
default-character-set = german1
lt. Manual: default-character-set=latin_de http://www.mysql.de/doc/de/German_character_set.html HTH Frank
Am Montag, 20. Oktober 2003 09:08 schrieb Frank Rasche:
Moin,
Al Bogner schrieb am Montag, 20. Oktober 2003 um 08:45:
default-character-set = german1
lt. Manual:
default-character-set=latin_de
Danke für den Hinweis. Weißt du auch noch zufällig den Unterschied zwischen latin_de und german1? Mit german1 werden Großbuchstaben zuerst gereiht, also ÄPFEL vor abwärts. Kann man sich das MySQL-Referenzhandbuch von http://www.mysql.de/doc/de/ auch runterladen? Al
Al Bogner wrote:
Kann man sich das MySQL-Referenzhandbuch von http://www.mysql.de/doc/de/ auch runterladen?
Ja, wechsel mal ein paar Verzeichnisse hoeher, da gibt's dann die Moeglichkeit dazu. -- Have fun, Peter
Am Montag, 20. Oktober 2003 10:42 schrieb Peter Wiersig:
Al Bogner wrote:
Kann man sich das MySQL-Referenzhandbuch von http://www.mysql.de/doc/de/ auch runterladen?
Ja, wechsel mal ein paar Verzeichnisse hoeher, da gibt's dann die Moeglichkeit dazu.
Ein paar Verzeichnisse? Dann bin ich bei http://www.mysql.de/. Der Link Handbuch führt zu http://www.mysql.de/doc/de/index.html und bei http://www.mysql.de/downloads/index.html bzw. http://www.mysql.de/downloads/mysql-3.23.html finde ich auch kein Handbuch. Al
Al Bogner wrote:
Am Montag, 20. Oktober 2003 10:42 schrieb Peter Wiersig:
Al Bogner wrote:
Kann man sich das MySQL-Referenzhandbuch von http://www.mysql.de/doc/de/ auch runterladen?
Ja, wechsel mal ein paar Verzeichnisse hoeher, da gibt's dann die Moeglichkeit dazu.
Ein paar Verzeichnisse? Dann bin ich bei http://www.mysql.de/.
Ja, das CMS von denen scheint nicht wirklich gut zu sein. Ich erwartete, das bei http://www.mysql.de/doc/ das erscheint was der Navi-Header unter Dokomentation verlinkt hat: http://www.mysql.de/documentation/index.html Ausserdem ist die Dokumentation auf der Webseite sicher das latest-stable Release, und das ist schon ein 4.0 -- Have fun, Peter
Hallo, Am Mon, 20 Oct 2003, Al Bogner schrieb:
Am Montag, 20. Oktober 2003 10:42 schrieb Peter Wiersig:
Al Bogner wrote:
Kann man sich das MySQL-Referenzhandbuch von http://www.mysql.de/doc/de/ auch runterladen?
Ja, wechsel mal ein paar Verzeichnisse hoeher, da gibt's dann die Moeglichkeit dazu.
Ein paar Verzeichnisse? Dann bin ich bei http://www.mysql.de/. Der Link Handbuch führt zu http://www.mysql.de/doc/de/index.html und bei http://www.mysql.de/downloads/index.html bzw. http://www.mysql.de/downloads/mysql-3.23.html finde ich auch kein Handbuch.
$ rpm -ql mysql | grep 'manual.*html' /usr/doc/packages/mysql/html/manual.html /usr/doc/packages/mysql/html/manual_toc.html Eigentlich muesste die Referenz bei dir auch in nem RPM vorliegen... -dnh -- } Some time ago, ISawAGN for the Mind::Reader package. Still can't find it } on CPAN. -- } Satya and Rik The DrillImpenetrableMatter() and ExtractNonexistentInfo() functions are still giving all kinds of trouble. Let's not even speak about Coherentify().
Am Montag, 20. Oktober 2003 17:06 schrieb David Haller:
$ rpm -ql mysql | grep 'manual.*html' /usr/doc/packages/mysql/html/manual.html /usr/doc/packages/mysql/html/manual_toc.html
Eigentlich muesste die Referenz bei dir auch in nem RPM vorliegen...
Ja, danke! Interessanterweise, wird von 8.2 die englische Version installiert, aber das ist mir ziemlich egal. Ich verfluche zur Zeit gerade meine 2 MySQL-Bücher, weil die Dinge, die ich Suche jetzt schon mehrmals nur in einem Nebensatz zu finden sind bzw. nur unvollständig erklärt sind (zB SOURCE) und alle Befehle und Funktionen nicht über das Inhaltsverzeichnis auffindbar sind. @ David: Der Einstieg in MySQL ist geschafft und provisorisch helfe ich mir mit mysql -A -p... adressen < adressen.sql Damit schiebe ich es hinaus einen Client zu programmieren. Mal sehen wie weit ich mit knoda komme. Vielleicht brauch ich gar nicht Java lernen und lande bei Perl :-) Al
Hallo, Am Mon, 20 Oct 2003, Al Bogner schrieb:
Am Montag, 20. Oktober 2003 17:06 schrieb David Haller:
$ rpm -ql mysql | grep 'manual.*html' /usr/doc/packages/mysql/html/manual.html /usr/doc/packages/mysql/html/manual_toc.html
Eigentlich muesste die Referenz bei dir auch in nem RPM vorliegen...
Ja, danke! Interessanterweise, wird von 8.2 die englische Version installiert, aber das ist mir ziemlich egal. Ich verfluche zur Zeit gerade meine 2 MySQL-Bücher, weil die Dinge, die ich Suche jetzt schon mehrmals nur in einem Nebensatz zu finden sind bzw. nur unvollständig erklärt sind (zB SOURCE) und alle Befehle und Funktionen nicht über das Inhaltsverzeichnis auffindbar sind.
*grins*
@ David: Der Einstieg in MySQL ist geschafft und provisorisch helfe ich mir mit mysql -A -p... adressen < adressen.sql Damit schiebe ich es hinaus einen Client zu programmieren. Mal sehen wie weit ich mit knoda komme. Vielleicht brauch ich gar nicht Java lernen und lande bei Perl :-)
*bg* -dnh --
Möchtest du lieber die kopflose Grete oder die Fraue ohne Unterleib? Naja! Mann hatt ja schon oft von Frauen gehöhrt die Ihren Kopf verloren haben. Aber was soll Ich mit einer Ohne Unterleib? Kann man die als Büstge in einer Vitrine spuken lassen? Hast du nichts in der Kategorie "Weisse Frau - Komplett"? [Bruder Franziskus und Woko° in dag°]
Am Montag, 20. Oktober 2003 09:08 schrieb Frank Rasche:
lt. Manual: default-character-set=latin_de http://www.mysql.de/doc/de/German_character_set.html
Hmm, mit latin_de kann ich mysql Ver 11.18 Distrib 3.23.55 nicht starten, ob sich die url bereits auf Version 4 bezieht? Al
Al Bogner schrieb am Montag, 20. Oktober 2003 um 10:41:
Am Montag, 20. Oktober 2003 09:08 schrieb Frank Rasche:
lt. Manual: default-character-set=latin_de http://www.mysql.de/doc/de/German_character_set.html
Hmm, mit latin_de kann ich mysql Ver 11.18 Distrib 3.23.55 nicht starten, ob sich die url bereits auf Version 4 bezieht?
Ja, sorry, habe ich nicht richtig gelesen. latin_de ist erst in den 4.x drin Aber in my.cnf sollte drin stehen: set-variable = default-character-set=german1 ^^^^^^^^^^^^ Hast du das so? Gruss Frank
Am Montag, 20. Oktober 2003 13:48 schrieb Frank Rasche:
Hmm, mit latin_de kann ich mysql Ver 11.18 Distrib 3.23.55 nicht starten, ob sich die url bereits auf Version 4 bezieht?
Ja, sorry, habe ich nicht richtig gelesen. latin_de ist erst in den 4.x drin Aber in my.cnf sollte drin stehen:
set-variable = default-character-set=german1 ^^^^^^^^^^^^ Hast du das so?
Hätte gar nicht gedacht, dass das ein so langer Thread wird :-) Nein, ich habe character-sets-dir=/usr/share/mysql/charsets default-character-set=german1 Wo hast du die Syntax nachgelesen? Gehört also bei beiden Variablen set-variable = character-sets-dir = /usr/share/mysql/charsets set-variable = default-character-set = german1 Al
Hallo Al, Al Bogner schrieb am Montag, 20. Oktober 2003 um 15:07:
Am Montag, 20. Oktober 2003 13:48 schrieb Frank Rasche:
set-variable = default-character-set=german1
Wo hast du die Syntax nachgelesen?
http://www.mysql.de/doc/de/Option_files.html Wenn es sich um eine mysqld-Variable handelt, ist das die Syntax in der my.cnf. Zugegeben, das Manual ist da nicht immer ganz klar, manchmal habe ich es auch nur durch ausprobieren gefunden.
Gehört also bei beiden Variablen
set-variable = character-sets-dir = /usr/share/mysql/charsets set-variable = default-character-set = german1
Ja. mysqladmin variables sollte dir u.a. auch die verfügbaren Zeichensätze auflisten (zumindest macht es das in meiner 4er Version ;-) ), je nachdem, mit welchen es kompilliert wurde. Gruss Frank
Am Montag, 20. Oktober 2003 16:06 schrieb Frank Rasche:
set-variable = default-character-set=german1
Wo hast du die Syntax nachgelesen?
http://www.mysql.de/doc/de/Option_files.html
Wenn es sich um eine mysqld-Variable handelt, ist das die Syntax in der my.cnf. Zugegeben, das Manual ist da nicht immer ganz klar, manchmal habe ich es auch nur durch ausprobieren gefunden.
Gehört also bei beiden Variablen
set-variable = character-sets-dir = /usr/share/mysql/charsets set-variable = default-character-set = german1
Ja.
Ohne " set-variable =" scheint es zu funktionieren, mit, läßt sich mysqld nicht starten. Also was ist nun richtig bzw. warum funktioniert es bei mir nicht? Das einzige was mich noch stört, ist, dass die Sortierung zuerst Großbuchstaben sortiert. Ansonsten hat sich ja die Sortierung mit meiner "fehlerhaften Syntax" geändert. Die Indizes wurden auch neu erstellt.
mysqladmin variables sollte dir u.a. auch die verfügbaren Zeichensätze auflisten (zumindest macht es das in meiner 4er Version ;-) ), je nachdem, mit welchen es kompilliert wurde.
War die Installation von Version4 problematisch? Ich weiß nicht, ob ich mir da eventuell Ärger antun soll. Manche Dinge an MySQL begeistern mich gar nicht und anspruchsvollere DBs als die augenblickliche AdressDB, werde ich vermutlich mit PostgreSQL lösen. Ich finde zwar immer irgendwie einen "workaround" mit MySQL, aber zeitweise kommt mir das extrem umständlich vor. Auch weiß ich noch nicht, ob postgreSQL letztlich wirklich für meine DB besser ist. Das werde ich erst merken, wenn ich mich damit beschäftige. So sieht zB ein Zusammenfügen von Daten nach bestimmten Kriterien aus. Ob ich damit nun ein Feld update oder gleich in einen Report schreibe, dürfte letztlich egal sein. Die concat-Syntax nervt mich ziemlich, wenn ich an die bash denke. Ich hätte auch "&" statt concat probiert, aber das funktionierte nicht. Ziel des Feldes ist es, einige wichtige Informationen möglichst _kompakt_ zu einem Handy zu übertragen. Version2 mit Erzeugen von einer vcf-Datei ist auch noch geplant. Zur Performance muß ich mir bei ca. 1000 Datensätzen zum Glück keine großen Gedanken machen. UPDATE basis SET listinfo = concat( if(tel_nr=0,"",concat(if(tel_ovw=89,concat("", replace(format(tel_nr,0),",",".") ,if(tel_dw="","",concat("-",tel_dw))), concat(concat(concat(if(tel_lvw =49,"0",concat("00",concat(tel_lvw,"-"))),concat(tel_ovw,"-")),replace(format(tel_nr,0),",",".")),if(tel_dw=0,'',concat("-",tel_dw)))),"; ")), if(ort="","",concat(land,"-",plz," ",ort, if(strasse="","", concat(", ",strasse)),";" )), if(geb='0000-00-00','',concat(" ",date_format(geb,'%e.%c.%y'), " (", round((to_days(curdate())-to_days(geb))/365,1),"J.), ",left(dayname(concat(year(curdate()),"-",month(geb),"-",dayofmonth(geb))),3), " in ",date_format(curdate(),'%y') )), if (firma="","",concat(" | ", concat(firma,if(tel_nr_fa=0,"",if(tel_ovw_fa=89,concat(" ", replace(format(tel_nr_fa,0),",",".") ,if(tel_dw_fa="","",concat("-",tel_dw_fa))), concat(concat(concat(if(tel_lvw_fa = 49," 0",concat(" 00",concat(tel_lvw_fa,"-"))),concat(tel_ovw_fa,"-")),replace(format(tel_nr_fa,0),",",".") ),if(tel_dw_fa=0,'',concat("-",tel_dw_fa))))))))); Über Hinweise, wie man so etwas performanter lösen kann, freue ich mich natürlich. Al
Al Bogner schrieb am Montag, 20. Oktober 2003 um 18:53:
Am Montag, 20. Oktober 2003 16:06 schrieb Frank Rasche:
Schmeiss mal diese Leerzeichen raus:
set-variable = character-sets-dir = /usr/share/mysql/charsets set-variable = default-character-set = german1 ^ ^ also set-variable = character-sets-dir=/usr/share/mysql/charsets set-variable = default-character-set=german1
Tut mir leid, wenn ich das falsch geschrieben habe.
Das einzige was mich noch stört, ist, dass die Sortierung zuerst Großbuchstaben sortiert. Ansonsten hat sich ja die Sortierung mit meiner "fehlerhaften Syntax" geändert. Die Indizes wurden auch neu erstellt.
Wenns auch so klappt, dann lass es so ;-) Ist dein Char-Feld, nach dem sortiert wird, binary? Dann sortiert er auch Gross- vor Kleinbuchstaben.
War die Installation von Version4 problematisch? Ich weiß nicht, ob ich mir da eventuell Ärger antun soll.
Puh, das kann ich schlecht sagen. Hier auf meinem Testserver schmeiss ich öfters mal ein neues MySQL-RPM drauf. Ich meine mich zu erinnern, dass es schon etwas hakelig war von 3.x nach 4.x. Allerdings habe ich hier auch nur PHP, Perl und Java drauf, die MySQL benutzen und die kompiliere ich ohnehin selber. Wie es da mit irgendwelchen KDE-Anwendungen ausieht, weiss ich nicht. Gruss Frank
Am Montag, 20. Oktober 2003 21:08 schrieb Frank Rasche:
Schmeiss mal diese Leerzeichen raus:
Damit klappte es auch vorher nicht. Wenn ich Zeit habe probiere ich es noch mal. Ich habe mich an der anderen Variablen-Syntax orientiert und da war beim 1. = ein Leerzeichen davor und danach und beim 2. = kein Leerzeichen.
Wenns auch so klappt, dann lass es so ;-)
Das habe ich mir auch schon gedacht.
Ist dein Char-Feld, nach dem sortiert wird, binary? Dann sortiert er auch Gross- vor Kleinbuchstaben.
Nein, eben nicht. Deswegen habe ich ja nach der genauen Syntax gefragt, um auszuschließen, dass es eventuell damit zusammenhängt. CREATE TABLE basis ( id int(6) NOT NULL auto_increment, vorname varchar(40) default NULL, nachname varchar(50) default NULL, ... PRIMARY KEY (id), KEY vorname (vorname), KEY nachname (nachname), ... ) TYPE=MyISAM;
War die Installation von Version4 problematisch? Ich weiß nicht, ob ich mir da eventuell Ärger antun soll.
Puh, das kann ich schlecht sagen. Hier auf meinem Testserver schmeiss ich öfters mal ein neues MySQL-RPM drauf.
Gibt es da fertige rpms für SuSE 8.2? Das würde ich riskieren. Selber kompilieren muß aber nicht sein. Ich freu mich, dass ich alle Pakete gefunden habe, damit die neuste Version von hk_classes und knoda durchlief.
Ich meine mich zu erinnern, dass es schon etwas hakelig war von 3.x nach 4.x.
Meinst du die 3er-Datenbanken auf 4 zu konvertieren oder die Installation selber. Ich teste noch mit 1 Tabelle und die generiere ich in 4 mit dump, wenn es sein muß. Es gibt auch keinen laufenden Betrieb, sodass ich aus dieser Sicht auf nichts aufpassen muß.
Allerdings habe ich hier auch nur PHP, Perl und Java drauf, die MySQL benutzen und die kompiliere ich ohnehin selber.
Was bringt es diese Sprachen, zB Perl, selber zu kompilieren? Ist es mehr als nur die aktuelle Version zu haben?
Wie es da mit irgendwelchen KDE-Anwendungen ausieht, weiss ich nicht.
Im wesentlichen ist es nur knoda, das keine Probleme machen soll. Al
Al Bogner schrieb am Montag, 20. Oktober 2003 um 21:49:
Am Montag, 20. Oktober 2003 21:08 schrieb Frank Rasche:
Ich habe mich an der anderen Variablen-Syntax orientiert und da war beim 1. = ein Leerzeichen davor und danach und beim 2. = kein Leerzeichen.
ja ok. Ansonsten fällt mir nur noch ein: Die Angaben auch im Abschnitt mysqld eingetragen? Irgendwelche Fehlermeldungen im Logfile oder beim Starten von mysqld?
Ist dein Char-Feld, nach dem sortiert wird, binary? Dann sortiert er auch Gross- vor Kleinbuchstaben.
Nein, eben nicht. Deswegen habe ich ja nach der genauen Syntax gefragt, um auszuschließen, dass es eventuell damit zusammenhängt.
Tja, ich kanns hier leider nicht nachvollziehen, da ich keine 3.23er Version mehr habe. Ich kann mich aber erinneren, dass die Sortierung mittels german1 nur halbwegs umgesetzt wurde. Zumindest hier berücksichtigt MySQL Gross- und Kleinschreibung nur bei binary-Feldern.
Gibt es da fertige rpms für SuSE 8.2? Das würde ich riskieren.
Nicht, dass ich wüsste.
Ich meine mich zu erinnern, dass es schon etwas hakelig war von 3.x nach 4.x.
Meinst du die 3er-Datenbanken auf 4 zu konvertieren oder die Installation selber.
Die Installation, aber genau weiss ich es nicht mehr, ich habe schon ziemlich früh die 4er Version getestet, weil ich einige Funktionen brauchte bzw. ausprobieren wollte. Aber letzendlich hat es auch geklappt, also unmöglich ist es nicht ;-) Die Datenbanken selber waren kein Problem. Ich meine es wären auch Scripte bei den Paketen dabei, die das erledigen.
Allerdings habe ich hier auch nur PHP, Perl und Java drauf, die MySQL benutzen und die kompiliere ich ohnehin selber.
Was bringt es diese Sprachen, zB Perl, selber zu kompilieren? Ist es mehr als nur die aktuelle Version zu haben?
Naja, oft ist es nur der ersehnte Bugfix. Aber zum einen hats den Vorteil, das du noch eventuell benötigte Module (wenn vielleicht auch nur zum Testen) mit rein nehmen kannst, die u.U. nicht in den RPMs drin sind. Zum anderen kann man mehrere Versionen gleichzeitig laufen lassen, wenn man es braucht (hatte hier ne zeitlang PHP3 & 4, derzeit noch ne PHP5-beta). Allerdings bei Perl fällt mir jetzt spontan nichts ein, was mir im RPM fehlen würde (und was sich nicht nachinstallieren ließe). Gruss Frank
Hallo, Am Mon, 20 Oct 2003, Al Bogner schrieb:
Das einzige was mich noch stört, ist, dass die Sortierung zuerst Großbuchstaben sortiert.
Hm. Komisch. Bei mir passiert genau das nicht... $ mysqladmin -p variables | language | /usr/share/mysql/english/ | | version | 3.22.32 | [..]
Über Hinweise, wie man so etwas performanter lösen kann, freue ich mich natürlich.
Du kannst mit CONCAT eine beliebig lange Liste von Komma-getrennten Feldern, Strings und sonstwas aneinanderfuegen. Und das ganze uebersichtlicher schreiben... Ich hoffe mal, ich hab's richtig hinbekommen ;) UPDATE basis SET listinfo = concat( if( tel_nr=0, "", # else: es gibt ne Tel-Nr concat( if( tel_ovw=89, # Ortsvorwahl Muenchen concat( replace( format( tel_nr, 0 ), ",", "." ), if( tel_dw="", "", concat( "-", tel_dw) ) ), # else: (Ortsvorwahl != Muenchen) concat( if( tel_lvw=49, # DE? "0", concat( "00", tel_lvw, "-" ) ), tel_ovw, "-", replace( format( tel_nr, 0), ",", "." ), if( tel_dw=0, '', concat( "-", tel_dw ) ) ) ), # end if tel_ovw=89 ";" ) # end else: concat ), # end if tel_nr=0 if( ort="", "", concat( land, "-", plz, " ", ort, if( strasse="", "", concat( ", ", strasse ) ), ";" ) ), if( geb='0000-00-00', '', concat( " ", date_format( geb, '%e.%c.%y' ), " (", round( (to_days(curdate()) - to_days(geb) ) / 365, 1 ), "J.), ", left( dayname( concat( year(curdate()), "-", month(geb), "-", dayofmonth(geb) ) ), 3 ), # end left " in ", date_format( curdate(), '%y' ) ) # end concat: else (geb!=0) ), # end if geb=0 if( firma="", "", # else: firma != "" concat( " | ", firma, if( tel_nr_fa=0, "", # else: tel_nr_fa != 0 if( tel_ovw_fa=89, concat( " ", replace(format(tel_nr_fa,0),",","."), if( tel_dw_fa="", "", concat( "-", tel_dw_fa) ) ), # else: tel_ovw_fa != 89 concat( if( tel_lvw_fa = 49, " 0", concat( "00", tel_lvw_fa, "-" ) ), tel_ovw_fa, "-", replace(format(tel_nr_fa,0),",","."), if( tel_dw_fa=0, '', concat( "-", tel_dw_fa ) ) ) # end concat: else (tel_owv!=89) ) # end if: tel_ovw_fa=89 ) # end if: tel_nr_fa=0 ) # end concat: else (firma!="") ) # end if: firma="" ); # end concat Wenn du nachzaehlst, siehst du, dass ein Haufen 'concat' rausgeflogen sind ;) Merkregel: ein 'concat ( concat ( ... ) )' ist ueberfluessig. HTH, -dnh --
Du tust ja fast so, als gäbe es etwas, das bei Redhat _nicht_ nach hinten losgeht!? .forward ? [Matthias Kabel zu Felix von Leitner in dasr]
Am Montag, 20. Oktober 2003 21:35 schrieb David Haller:
Am Mon, 20 Oct 2003, Al Bogner schrieb:
Das einzige was mich noch stört, ist, dass die Sortierung zuerst Großbuchstaben sortiert.
Hm. Komisch. Bei mir passiert genau das nicht...
David, zitierst du bitte mal genau aus deiner my.cnf. Dann probiere ich das mit copy&paste.
$ mysqladmin -p variables
| language | /usr/share/mysql/english/ | | version | 3.22.32 |
[..]
Bei mir gibt das auszugsweise: | character_set | german1 | | character_sets | latin1 big5 czech euc_kr gb2312 gbk sjis tis 620 ujis dec8 dos german1 hp8 koi8_ru latin2 swe7 usa7 cp1251 danish hebrew win1 251 estonia hungarian koi8_ukr win1251ukr greek win1250 croat cp1257 latin5 | | version | 3.23.55-Max-log Da gibt es also character_set und character_sets
Du kannst mit CONCAT eine beliebig lange Liste von Komma-getrennten Feldern, Strings und sonstwas aneinanderfuegen. Und das ganze uebersichtlicher schreiben...
Ich muß mir deine Version erstmal ansehen, ob die wirklich das macht, was ich möchte. An und für sich weiß ich, dass man mit concat mehrere Teile zusammenfügen kann, nur wenn an einen Teil eine Bedingung geknüpft ist, wo wieder etwas zusammenzufügen ist, dann kommt man IMO daran nicht herum. Kann aber durchaus sein, dass sich im Laufe der einzelnen Tests, einige concats zuviel ergeben haben. Ich hatte das auch ähnlich wie du gegliedert und dann am Schluß alles in wenige Zeilen gepackt um es leichter deaktivieren zu können.
Ich hoffe mal, ich hab's richtig hinbekommen ;)
Das ist gar nicht entscheidend. Wichtig sind die Tips, wie du so was angehst und so weit lag ich gar nicht daneben. Am Mac war so was auch nicht gerade kompakt zu formulieren, aber doch übersichtlicher. Ist so was mit postgresql einfacher zu formulieren oder ändert sich da wenig, da ja beides SQL-Dialekte sind? Den Tipp mit den Kommentaren in der Syntax finde ich gut.
Wenn du nachzaehlst, siehst du, dass ein Haufen 'concat' rausgeflogen sind ;) Merkregel: ein 'concat ( concat ( ... ) )' ist ueberfluessig.
Ja klar, siehe oben. Und bevor ich wieder ewig suche: Kann mir bitte jemand einen Hinweis geben, wie ich ein bestimmtes Feld in einer Selektion mit einer Sequenz fülle. Also ich möchte zB ein Feld mit allen Münchner-Adressen, nach Name "indiziert" mit einer laufenden Nummer, beginnend mit 1, füllen. Der Schwerpunkt der Syntax liegt in der Sequenz. Al
Hallo, Am Mon, 20 Oct 2003, Al Bogner schrieb:
Am Montag, 20. Oktober 2003 21:35 schrieb David Haller:
Am Mon, 20 Oct 2003, Al Bogner schrieb:
Das einzige was mich noch stört, ist, dass die Sortierung zuerst Großbuchstaben sortiert.
Hm. Komisch. Bei mir passiert genau das nicht...
David, zitierst du bitte mal genau aus deiner my.cnf. Dann probiere ich das mit copy&paste.
Wird kaum klappen, "character_set{,s}" gibt's bei mir offenbar nicht. In der /etc/my.cnf hab ich gar nix zu language/charset, in der ~/.my.cnf eh nur "host", "port" und "socket". Interessant ist aber die Syntax, wie Variablen gesetzt werden, z.B.: set-variable = key_buffer=16M d.h. bei "set-variable = " duerfte whitespace irrelevant sein, dann bei "varname=wert" darf wohl keiner mehr auftauchen...
$ mysqladmin -p variables
| language | /usr/share/mysql/english/ | | version | 3.22.32 |
[..]
Bei mir gibt das auszugsweise:
| character_set | german1
| | character_sets | latin1 big5 czech euc_kr gb2312 gbk sjis tis 620 ujis dec8 dos german1 hp8 koi8_ru latin2 swe7 usa7 cp1251 danish hebrew win1 251 estonia hungarian koi8_ukr win1251ukr greek win1250 croat cp1257 latin5 |
| version | 3.23.55-Max-log
Da gibt es also character_set und character_sets
Hm. Das muesste dann z.B. set-variable = character_set=latin1 sein. Mein mysql ist halt schon ordentlich abgehangen $ rpm -q --queryformat "%{buildtime:date}\n" mysql Fri 24 Mar 2000 10:45:07 PM CET und kennt die character_set Optionen wohl noch nicht. "language" bezieht sich ausserdem nur auf Fehlermeldungen... Wozu willst du eigentlich sortieren? Muss das "innerhalb" von mysql passieren? Sonst koenntest du die Daten in ne Datei (csv) rausschreiben, mit 'sort' und nem bel. LC_COLLATE sortieren und dann wieder importieren...
Du kannst mit CONCAT eine beliebig lange Liste von Komma-getrennten Feldern, Strings und sonstwas aneinanderfuegen. Und das ganze uebersichtlicher schreiben...
Ich muß mir deine Version erstmal ansehen, ob die wirklich das macht, was ich möchte.
Ja, muesste aber eigentlich ;)
An und für sich weiß ich, dass man mit concat mehrere Teile zusammenfügen kann, nur wenn an einen Teil eine Bedingung geknüpft ist, wo wieder etwas zusammenzufügen ist, dann kommt man IMO daran nicht herum.
Jep, z.B. "innerhalb" von ifs, da darf halt das "then" und "else" jew. nur "ein" Block sein, und deswegen braucht man dort dann ein "inneres" concat(), im concat ist's nur ne Komma-getrennte Liste... Also, als einfaches Beispiel: concat( "a", "b", "c", if( foo > 0, "DUH!", "d" ), "e", "f", "g" ) concat( "a", if( LENTGH(bar) > 0, bar, concat( foo, "-", bar, "!" ), ), "c", "d", baz, "e", fubar, "f" ) Das "if ( COND, THEN, ELSE )" expandiert fuer's concat eben zu einem "token" und das "concat" fuer's "if" ebenso... Auf mehr muss man in der Beziehung nicht achten. Bei "concat" ist die Syntax also: CONCAT ( TOKENLIST ) mit TOKENLIST := TOKEN | TOKEN "," TOKENLIST und "TOKEN" kann ein komplettes if( ... ) sein, ein weiteres concat, oder ein "Stringliteral", ein Spaltenname, oder...
Kann aber durchaus sein, dass sich im Laufe der einzelnen Tests, einige concats zuviel ergeben haben.
Ja ;)
Ich hatte das auch ähnlich wie du gegliedert und dann am Schluß alles in wenige Zeilen gepackt um es leichter deaktivieren zu können.
*g* Da verwende ich einfach ein 'M-x comment-region'...
Ich hoffe mal, ich hab's richtig hinbekommen ;)
Das ist gar nicht entscheidend. Wichtig sind die Tips, wie du so was angehst und so weit lag ich gar nicht daneben. Am Mac war so was auch nicht gerade kompakt zu formulieren, aber doch übersichtlicher.
Wobei ich dazu sagen musst, dass ich mich mit SQL eigentlich auch nicht gut auskenne... Nur hab ich wohl ein Talent, durch solche "Syntaxen" (und Gebrauchsanleitungen ;) etc. durchzusteigen und dann uebertrage ich gerne von andrens Sachen ("Programmiersprachen") Dinge/Konzepte usw. ;)
Ist so was mit postgresql einfacher zu formulieren oder ändert sich da wenig, da ja beides SQL-Dialekte sind?
Keine Ahnung, leider -- PostgreSQL will ich mir auch demnaechst irgendwann mal anschauen, das mit den stored procedures wuerde mich schon reizen. Ansonsten: die SQL-Dialekte sind AFAIK weitgehend aehnlich, mysql hat ein paar Spezialitaeten und einige Luecken, PostgreSQL andere (und weniger Luecken)...
Den Tipp mit den Kommentaren in der Syntax finde ich gut.
*g*
Wenn du nachzaehlst, siehst du, dass ein Haufen 'concat' rausgeflogen sind ;) Merkregel: ein 'concat ( concat ( ... ) )' ist ueberfluessig.
Ja klar, siehe oben.
Und bevor ich wieder ewig suche: Kann mir bitte jemand einen Hinweis geben, wie ich ein bestimmtes Feld in einer Selektion mit einer Sequenz fülle. Also ich möchte zB ein Feld mit allen Münchner-Adressen, nach Name "indiziert" mit einer laufenden Nummer, beginnend mit 1, füllen. Der Schwerpunkt der Syntax liegt in der Sequenz.
Ouh. Keine Ahnung... AUTOINCREMENT? Ich wuerde wohl awk dahinterschalten ;) Das mit "7.2 User Variables" klappt hier garnet... -dnh, schoene sig, gell? -- 'Tell me, what is happiness?' 'Happiness? Happiness... is to wake up, on a bright spring morning, after an exhausting first night spent with a beautiful... passionate... multi-murderess.' -- Use of Weapons, Prologue, by Iain M. Banks
Am Montag, 20. Oktober 2003 08:45 schrieb Al Bogner:
character-sets_dir = /usr/share/mysql/charsets
... sets-dir ...
sets_dir = /usr/share/mysql/charsets
funktioniert nicht.
Sorry, man sollte bei einer Fehlersuche nicht an 5 Rechnern gleichzeitig beschäftigt sein und Postings genau lesen. So funktioniert es nun: character-sets-dir = /usr/share/mysql/charsets default-character-set = german1 Al
Am Montag, 20. Oktober 2003 08:45 schrieb Al Bogner:
Lt. meinem Handbuch und Google sollte man in /etc/my.cnf character-sets_dir = /usr/share/mysql/charsets
... sets-dir ...
sets_dir = /usr/share/mysql/charsets
funktioniert nicht.
Klar, weil ich nur auf den Bindestrich zwischen "sets" und "dir" aufmerksam machen wollte. In Deiner Mail steht da ein Unterstrich. Komplett heisst es "character-sets-dir = /usr/share/mysql/charsets". -- Andreas
participants (5)
-
Al Bogner
-
Andreas Winkelmann
-
David Haller
-
Frank Rasche
-
Peter Wiersig