Sonderzeichen/Zahlen in MySQL
t-m-s
- datenbank
Hallo!
Ich möchte gerade eine MySQL-Tabelle in einer Liste ausgeben. Für jeden Buchstabe gibt es eine extra Liste. Das klappt schon prima:
SELECT * FROM artikel
WHERE thema LIKE '".$_GET[anfangsbuchstabe]."%' ORDER BY thema
ASC
Jetzt möchte ich aber noch eine Kategorie "sontige" haben, in der alle Zahlen (0-9) und Sonderzeichen (+*~#...) angezeigt werden. Wie kann ich eine solche Abfrage machen??
Thomas
Hello,
Ich möchte gerade eine MySQL-Tabelle in einer Liste ausgeben. Für jeden Buchstabe gibt es eine extra Liste. Das klappt schon prima:
SELECT * FROM
artikel
WHERE thema LIKE '".$_GET[anfangsbuchstabe]."%' ORDER BYthema
ASCJetzt möchte ich aber noch eine Kategorie "sontige" haben, in der alle Zahlen (0-9) und Sonderzeichen (+*~#...) angezeigt werden. Wie kann ich eine solche Abfrage machen??
Die Sinnigkeit des Statements möchte ich hier nicht ansprechen, das übernehmen vielleicht die Anderen?
Jedenfalls sieht es doch so aus, dass Du hier die beiden Teilmengen "Ich weiß, was ich suche" und "Der ganze Rest" bilden willst, oder? "Ich weiß, was ich suche" hast Du nochmal unterteilt in verschiedene Unterteilmengen.
Wie kann man denn nun den Rest anzeigen, das war doch die Frage, oder?
Würde da eventuell eine Negierung etwas nützen?
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Die einzige Möglichkeit, die mir bekannt ist, wäre die hier:
NOT LIKE 'A%' and NOT LIKE 'B%' and NOT LIKE 'C%' ...and NOT LIKE 'Z%'
Doch das ganze erscheint mir etwas lang. Daher dachte ich, da wird es bestimmt was kürzeres geben...
Hello,
Die einzige Möglichkeit, die mir bekannt ist, wäre die hier:
NOT LIKE 'A%' and NOT LIKE 'B%' and NOT LIKE 'C%' ...and NOT LIKE 'Z%'Doch das ganze erscheint mir etwas lang. Daher dachte ich, da wird es bestimmt was kürzeres geben...
Naja, wenn die Datenbank mit UTF-8 arbeitet, wird das wahrscheinlich doch die kürzere Version sein. :-((
Aber wenn es nur um den Anfang des Strings geht, ist LIKE sowieso nicht der beste Freund.
Da ist Substring() besser und außerdem gibt es noch "in()"
where substring(spaltenname
,1,1) not in ('A','B','C', ...)
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
echo $begrüßung;
Ich möchte gerade eine MySQL-Tabelle in einer Liste ausgeben. Für jeden Buchstabe gibt es eine extra Liste. Das klappt schon prima:
Jetzt möchte ich aber noch eine Kategorie "sontige" haben, in der alle Zahlen (0-9) und Sonderzeichen (+*~#...) angezeigt werden. Wie kann ich eine solche Abfrage machen??
MySQL kennt neben LIKE auch RLIKE für reguläre Ausdrücke.
SELECT * FROM artikel
WHERE thema RLIKE '[1]' ORDER BY thema
SELECT * FROM
artikel
WHERE thema LIKE '".$_GET[anfangsbuchstabe]."%' ORDER BYthema
ASC
Bitte informiere dich über das Thema Database Security und da speziell über SQL Injection. Anschließend verwende mysql_real_escape_string() für alle Werte, die du in ein SQL-Statement einfügst. Informiere dich bitte ebenfalls über Magic Quotes und wie man sie deaktivert, denn die versuchen ebenfalls SQL-Injection zu verhindern, sind aber nicht direkt für MySQl geeignet.
echo "$verabschiedung $name";
^A-Z ↩︎