phpbar.de logo

Mailinglisten-Archive

Re: AW: select-problem
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: AW: select-problem



mysql-de_(at)_lists.4t2.com schrieb am 19.08.00:

> das string stoert mich auch irgendwie. ich lege die spalten jeweils als
> varchar fest und wenn ich die tabelle dann angucke steht string drin ....?
> kann das am db-admin tool liegen das ich benutze??

Ach ja: zu dem db-admin tool: Was genau setzt du da ein? Und generell kann es durchaus sein, dass die Typen von Datenbank zu Datenbank verschieden sind. Dies kann zum Teil ganz schön krass sein. Ich selbst würde daher bei Problemen einfach die Daten aus "describe <tabellenname>" direkt aus dem mysql Client nehmen - dann sind auf jeden Fall alle wichtigen Daten dabei, die die Tabelle ausmachen.

> ich kenn mich mit mysql noch nicht besonders gut aus (zu meiner
> entschuldigung ...)
Das macht ja nichts ... jeder fängt irgend wann einmal an :)
Ich wünsche Dir auf jeden Fall viel Erfolg und Spass mit mysql.

> auf jeden fall hab ich es jetzt erst mal mit like% gemacht und es klappt
> auch. was natuerlich nicht heisst das mich eine loesung des problems nicht
> nach wie vor brennend interessiert ;-)
Nunja - das like '%... ist absolut lahm - da da kein INDEX mehr zieht!
Und wenn ein like '2%' geht, dann ist das schon bedeutend schneller ...
Und ich würde halt erst einmal eine suche nach '2    ' (also aufgefüllt mit Leerzeichen) probieren (falls es CHAR ist und kein VARCHAR).

Die beste Lösung ist natürlich - wie es auch schon angeklungen ist - die Zahlen als Zahlen zu speichern.

Und nun habe ich selbst auch noch etwas getestet ...

Ich habe die Tabelle test angelegt (Nacheinander natürlich):
Zuerst:
CREATE TABLE test (test VARCHAR(5));
dann im 2. Durchlauf:
CREATE TABLE test (test CHAR(5));

Beidesmal habe ich Werte hinzugefügt:
INSERT INTO test VALUES ('2');
INSERT INTO test VALUES ('3');
INSERT INTO test VALUES ('23');

und beides mal funktionierten die Abfragen:

SELECT * FROM test WHERE test='2';      # => 1. DS
SELECT * FROM test WHERE test LIKE '2'; # => 1. DS
SELECT * FROM test WHERE test LIKE '2%';# => 1. + 3. DS
SELECT * FROM test WHERE test LIKE '%3';# => 2. + 3. DS

Daher wundert mich das jetzt etwas. Sollte er bei CHAR '2' gar nicht finden?

Ein WHERE test='2    '; funktionierte bei CHAR auch.

Daher nehme ich an, dass mysql (server) hier eine Art Typecasting macht und die entsprechenden Leerzeilen bei CHAR Feldern automatisch hinzufügt?

Der Client selbst (mysql Programm) sollte das Select ja 1:1 durchreichen...

Und das Ganze wundert mich jetzt etwas - daher sollte es auch bei Dir keine Probleme geben ...

Heike:
Kannst Du mir bitte einmal ein paar Daten zusenden?
- Verwendete MySQL Version (Sorry, wenn Du die schon genannt hattest)
- "describe <tabelle>;" auf die betroffenen Tabellen
- die genaue Abfrage, die nicht funktionierte
- die genaue Abfrage, die dann ging (%-Lösung)

Mit besten Grüßen,

Konrad Neitzel


Mit besten Grüßen,

Konrad Neitzel

-- 
Konrad Neitzel
Kesselsdorfer Str. 41
01159 Dresden
_______________________________________________________________________
1.000.000 DM gewinnen - kostenlos tippen - http://millionenklick.web.de
IhrName_(at)_web.de, 8MB Speicher, Verschluesselung - http://freemail.web.de

---
*** Abmelden von dieser Mailingliste funktioniert per E-Mail
*** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive