php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 28-01-2009, 00:48
manuelone
 Registrierter Benutzer
Links : Onlinestatus : manuelone ist offline
Registriert seit: Mar 2004
Beiträge: 167
manuelone zeigte ein beschämendes Verhalten in der Vergangenheit
Standard Where Like IN (...) ??

Hallo,

ich suche nach einer Möglichkeit aus einer MYSQL Tabelle alle Datensätze auszugeben wo z.b. das Feld ZAHL mit 1, 2 oder 3 anfängt.
Wenn das Feld = der Zahlen sein soll, würde das ja so aussehen:

PHP-Code:
SELECT FROM table WHERE zahl IN (1,2,3
Ich bräuchte praktisch sowas in der Art:

PHP-Code:
SELECT FROM table WHERE zahl LIKE IN ("1%","2%","3%"
Hat da jemand eine Funktion/Idee für mich?
Mit Zitat antworten
  #2 (permalink)  
Alt 28-01-2009, 00:56
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard Re: Where Like IN (...) ??

WHERE funktionzumermittelndeserstenzeichensineinemstringdiedudirjetztimmysqlmanualmalsuchengehst(spalte) IN ('1', '2', '3')


(Alternativ mehrere Like-Vergleiche mit ODER verknuepfen.)
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 28-01-2009, 01:00
manuelone
 Registrierter Benutzer
Links : Onlinestatus : manuelone ist offline
Registriert seit: Mar 2004
Beiträge: 167
manuelone zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Sorry, war evtl. etwas ungenau.
Die Zeichenlänge der Zahl ist später variabel und die Anzahl der Zahlen ist auch varibel, also es könnte auch so aussehen:
12, 56, 2, 4678, 3, 95230
Mit Zitat antworten
  #4 (permalink)  
Alt 28-01-2009, 01:31
jmc
 PHP Junior
Links : Onlinestatus : jmc ist offline
Registriert seit: Mar 2006
Beiträge: 868
jmc befindet sich auf einem aufstrebenden Ast
Standard

Man gehe zum Manual und suche nach REGEXP
Mit Zitat antworten
  #5 (permalink)  
Alt 28-01-2009, 01:40
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

SELECT ... WHERE CAST(zahl AS CHAR(1)) IN (1,2,3)
Mit Zitat antworten
  #6 (permalink)  
Alt 28-01-2009, 09:55
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Das Feld heißt Zahl, beinhaltet in den ersten Zeichen Ziffern, ist aber kein Zahlentyp... Das erscheint mir doch etwas verkorkst.
Mit Zitat antworten
  #7 (permalink)  
Alt 28-01-2009, 12:37
manuelone
 Registrierter Benutzer
Links : Onlinestatus : manuelone ist offline
Registriert seit: Mar 2004
Beiträge: 167
manuelone zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zitat:
Original geschrieben von onemorenerd
SELECT ... WHERE CAST(zahl AS CHAR(1)) IN (1,2,3)
Das ist schon mal gut, nur wie gesagt, wenn dort 122, 34, 4 funktioniert das nicht mehr, da ja CHAR(1) den Wert aus der Datenbank auf eine Ziffer kürzt. Manchmal müsste es aber auf zwei, drei oder mehr Ziffern kürzen.

@jmc, bei REGEXP habe ich leider nichts gefunden, wo mehrere mögliche Werte bearbeiten werden sondern immer nur einer...!?

@PHP-Desaster, hä? Das Feld kann auch Peterpan heißen, das ist nur ein Beispiel.
Mit Zitat antworten
  #8 (permalink)  
Alt 28-01-2009, 12:48
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von manuelone
Das ist schon mal gut, nur wie gesagt, wenn dort 122, 34, 4 funktioniert das nicht mehr, da ja CHAR(1) den Wert aus der Datenbank auf eine Ziffer kürzt. Manchmal müsste es aber auf zwei, drei oder mehr Ziffern kürzen.
Was denn nun? Anfangs wolltest du:

Zitat:
Original geschrieben von manuelone
Hallo,

ich suche nach einer Möglichkeit aus einer MYSQL Tabelle alle Datensätze auszugeben wo z.b. das Feld ZAHL mit 1, 2 oder 3 anfängt.
Und nun?
Mit Zitat antworten
  #9 (permalink)  
Alt 28-01-2009, 13:00
manuelone
 Registrierter Benutzer
Links : Onlinestatus : manuelone ist offline
Registriert seit: Mar 2004
Beiträge: 167
manuelone zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zitat:
Original geschrieben von manuelone
Sorry, war evtl. etwas ungenau.
Die Zeichenlänge der Zahl ist später variabel und die Anzahl der Zahlen ist auch varibel, also es könnte auch so aussehen:
12, 56, 2, 4678, 3, 95230
Eine Möglichkeit wäre, vorher eine SQL-Abfrage zu machen, wo das Feld ZAHL ausgelesen wird und die einzelnen Zahlen des Feldes in ein Array geschrieben werden und dann in einer Schleife die Where-Abfrage zusammenzubauen:

zahl LIKE "12%" OR zahl LIKE "56%" OR zahl LIKE "2%" OR zahl LIKE "4678%"

Aber das müsste doch auch eleganter gehen oder? Vorallem ist das glaub ich ziemlich langsam...

Geändert von manuelone (28-01-2009 um 13:05 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 28-01-2009, 13:09
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Dann musst du mit REGEXP arbeiten, z.B.

REGEXP '^[0-9]{1,}'
Mit Zitat antworten
  #11 (permalink)  
Alt 28-01-2009, 13:23
manuelone
 Registrierter Benutzer
Links : Onlinestatus : manuelone ist offline
Registriert seit: Mar 2004
Beiträge: 167
manuelone zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

SELECT *
FROM ...
WHERE zahl REGEXP '^[0-9]{1,}'

Ich hab das gerade mal ausprobiert, da bekomme ich dann alle Datensätze ausgegeben. Hab leider noch nicht wirklich etwas mit Regexp gemacht und in der Doku wird das auch nicht gerade easy erklärt. Könntest du mir evtl. kurz erläutern was du dir dabei jetzt gedacht hast, bzw. was davon jetzt z.b. 13, 23, 235, 3 wäre?
Mit Zitat antworten
  #12 (permalink)  
Alt 28-01-2009, 13:25
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

einfach hier: http://dev.mysql.com/doc/refman/5.1/en/regexp.html lesen

^: am Anfang des Strings
[0-9]: Zahlen von 0 bis 9
{n,m}: mindestens n characters, max. m characters, ohne m = unendlich, also {1,} => mindestens 1 oder mehr.

Geändert von asp2php (28-01-2009 um 13:27 Uhr)
Mit Zitat antworten
  #13 (permalink)  
Alt 28-01-2009, 13:39
manuelone
 Registrierter Benutzer
Links : Onlinestatus : manuelone ist offline
Registriert seit: Mar 2004
Beiträge: 167
manuelone zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

DANKE!
Dein Beispiel hab ich nicht verstanden ^^
Aber die Doku war dann doch hilfreich:

SELECT *
FROM ...
WHERE zahl REGEXP '^(561|4516|3)'
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:55 Uhr.