Moin!
nAbend,
Nein, man KANN sie weglassen, man MUSS es aber nicht.
hmm.
'2' != 2 - oder sehe ich da etwas falsch?
Wir reden hier von SQL, genauer von MySQL. Wie die Datenbank Zahlen und Strings interpretiert, ist ihre Sache und kann von der Art und Weise, wie dies andere Programmiersprachen tun, durchaus abweichen.
MySQL ist, genau wie PHP, eine Sprache ohne feste Datentypen. Schlimmer noch als PHP kennt MySQL nicht mal komplexe Datentypen wie Arrays, sondern wirklich nur die einfachen Datentypen String und Zahl. Und bei Zahlen ist es wirklich total egal, ob die nun innerhalb von Anführungszeichen stehen, oder nicht - denn weil sie die Datenbank nur innerhalb des SQL-Strings erreichen können, sind ohnehin sämtliche Zahlen in die Stringdarstellung umgewandelt, es gibt also keinen Speichervorteil für Integerzahlen oder IEEE-Fließkommazahlen. Der Vorteil der Stringdarstellung auch von Zahlen ist, dass man ohne große Probleme beliebige Genauigkeit bei der Zahldarstellung verwenden kann, außerdem kommt es nicht zwingend zu Rundungsfehlern aufgrund von Binärdarstellung - das dürfte mit ein Grund sein, warum MySQL Fließkommazahlen als String speichert.
Da MySQL also ohnehin eine Zahleninterpretationsroutine eingebaut haben muß, ist es also ziemlich egal, ob die Zahlen selbst nochmal in Stringbegrenzer eingeschlossen sind, oder nicht. Interpretieren und ermitteln, welcher Zahlenwert gemeint ist, muß MySQL sowieso. Aber mit Stringbegrenzern hat man als Programmierer eben den Vorteil, dass mysql_escape_string() funktioniert.
- Sven Rautenberg