SQL Regulärer Ausdruck

Der-Pre

Cadet 2nd Year
Registriert
Okt. 2007
Beiträge
25
Hallo,

ich habe eine SQL Tabelle (Phpmyadmin) aus der ich aus "Endgeraet" mittels regulärem Ausdruck ein Feld herausziehen muss.
z.B.: Nokia: 999
Tabelle: tab
Feld: Endgeraet
Dieses soll nun ab dem Doppelpunkt getrennt werden. Und dann die Anzahl aller verschiedenen Hersteller zählen muss und von unten nach oben von ihrer Anzahl ordnen muss.

Also z.B.:

Nokia 9
Samsung 7
Motoroller 3

usw.

Habe keine ahnung wie ich das am besten anstelle.

MFG

Carsten
 
AW: SQL Regulärer Ausdruck

Um was für eine Datenbank handelt es sich denn genau? Denn die Syntax der Klauseln ist nicht wirklich einheitlich!

select endgeraete, count (endgeraete) from tab group by endgeraete

jedenfalls sollte das in mysql funktionieren.
 
AW: SQL Regulärer Ausdruck

Hi arbeite gerade mit mySQL:
SELECT COUNT( Endgeraet ) AS SAMSUNG
FROM ews_import_cmc_data
WHERE Endgeraet
REGEXP 'SAMSUNG:*'

ist der jetzige Stand. Habe Probleme mit der REGEXP für [a-z,A-Z]*: Zudem muss ich irgendwie den String noch vor dem Doppelpunkt splitten.
 
AW: SQL Regulärer Ausdruck

Ich kenne zwar die RegEx-Syntax für MySQL nicht, aber '[a-z,A-Z]*:' kann nach normalerweise nicht funktionieren, außer die haben das Rad neu erfunden und legen für die Funktion eine eigene Syntax zu Grund :) Richtiger für dein Vorhaben wäre diese Syntax: REGEXP '[a-zA-Z]+\:.*' bzw. REGEXT 'Samsung\:.*. Bin mir aber nicht sicher, ob du den Doppelpunkt überhaupt escapen musst.
 
AW: SQL Regulärer Ausdruck

wozu brauchst du für so ne suche regexp? so kompliziert ist samsung:* doch nun wirklich nicht.. da würde es ein LIKE auch tun.
 
AW: SQL Regulärer Ausdruck

Also beim MS SQL Server würde ich sagen:

select endgeraet, count(endgeraet)
from ews_import_cmc_data
where endgeraet like 'Samsung%'
group by endgeraet

Darf man fragen, wer dieses Katastrophale Datenbanklayout verbrochen hat? Dafür gehört man ja sofort gesteinigt:D
 
AW: SQL Regulärer Ausdruck

Hatte den Befehl Montag noch hinbekommen:

Für die Namen kann ich nichts :)

SELECT ews_cmc_id, SUBSTRING( Endgeraet, 1, POSITION( ':'
IN Endgeraet ) -1 ) AS her, Count( * ) AS count
FROM ews_import_cmc_data
WHERE Endgeraet != ''
GROUP BY her
ORDER BY `count` DESC
 
AW: SQL Regulärer Ausdruck

ganz grauenvoll und extrem schlechte performance.
 
AW: SQL Regulärer Ausdruck

Was du da machst ist ganz böse. Sowohl LIKE als auch REG-EX Ausdrücke benötigen preformance, zudem frag ich mich, warum hier keiner mit der Idee kam, dir mal die 1. Normalform der Datenbanken nahe zulegen. Du speicherst in einem Feld 2 Werte ab, diese sind mit einem : getrennt, laut 1. NF ist dies böse: Mach doch aus dieser Spalte Entgeraet zwei: Hersteller, Bezeichnung
Das ist sauber, und erleichtert die Arbeit. Eine Abfrage könnte dann so aussehen:
Code:
SELECT bezeichung, COUNT(bezeichnung)
FROM    endgeräte
WHERE hersteller = 'nokia'
Man könnte dann noch weiter machen, das ganze nach der 2. NF weiter bilden, nämlich immer wiederkehrende Daten in eine zweite Tabelle auslagern, das wären dann die Hersteller.
 
Sql kann keine regex syntax

schau dir mal die "like" funktion an
 
Falsch. mySQL kann sehr wohl REGEX! Dafür gibt es sogar eine Funktion. Bei vielen Datenbanken gibt es dazu sogar ebenso ene Funktion um mit Regulären Ausdrücken zu suchen.
 
und die funktion lautet wie ?

ich würd auch drauf schwören das es kein sql standard ist sondern irgendetwas reingefrickeltes
 
@roj:
1. es gibt keinen richtigen sql-standart
2. gehts hier um mysql
3. SELECT * FROM tName WHERE fName (NOT) REGEXP 'rex_exp'
...also kurzgefasst RTFM!
 
1. heisst es standar D (read the f*kn duden;-) ) und
2. gibt es sehr wohl einen sql standard (sogar mehrere)
3. das es um mysql geht hab ich überlesen, mein fehler
 
1. den fehler darfst behalten
2.1. ein standard ist eine verbindliche richtlinie, die sicherstellen soll das verschieden sachen zueinander kompatibel bzw. interoperabel sind. ist nicht der fall.
2.2. du kannst doch nicht behaupten es gibts einen standard aber davon mehrere, logik?
 
Es gibt verschiedenen Standards, die aber aufeinander aufbauen, genau so wie es ja für HTML mehrere Standards gibt.

SQL1, SQL2/-92, SQL-99, SQL:2003, SQL:2006
Gelten ist Aktuell SQL:2003, der SQL:2006 ist eine Erweiterung, die sich mit XML + SQL beschäftigt.

Die Befehle für Reguläreausdrücke sind in vielen SQL-Datenbanken vorhanden da er auch Standard ist, nur wie es mit Standards so schön ist, keiner hält sich dran oder wenn sie es tun: Problem nur dabei ist: Die Standards werden erweitert um eigene spezifische Funktionen, sowie bestimmtes Verhalten das sich unterscheidet.
So kann z.b eine Datenbank bei Tabellen und Spaltennamen zwiscen Groß und Kleinschreibung unterscheiden, die anderen tun es nicht usw. Kurz um: Der Standard ist da, jeder gibt an, wie sehr er sich dran hält, aber am Ende ist alles für die Katze, da jede Datenbank eigene spezialität hat, die so nicht bei den andere Vorhanden sind oder diese sich anders Verhalten, wären aber alle gleich, also alle halten sich nur an den SQL:2003 Standard, Verhalten sich immer Gleich, bräuchte man auch nur noch eine Datenbank!
 
Zuletzt bearbeitet von einem Moderator:
- ein standard an den sich keiner hält ist nun mal kein standard
- mehrere standards != ein standard
was ist daran so schwer?
 
Ah. Wie GameRsT schon anmerkte, es gibt zum Beispiel auch mehrere HTML-Standards. Der meistverwendete Browser hält sich auch nicht dran. Ist es deshalb kein Standard?

Aber die DBs heißen ja auch z.B. MySQL etc. Die müssen sich ja nicht daran halten. SQL Bezeichnet trotzdem den Standard, genau wie es auch bei HTML oder CSS ist.

Und dann noch was zu deiner Ausdrucksweise, ein Zitat von abulafia, hier aus dem Forum:
So, jetzt triffst dich mal als Exempel, aber "!=" ist kein deutsch und keine Art, wie man sich unter Menschen unterhält. So kannst du mit deinem Compiler reden.
 
@backslash: was ist an der aussage "mehrere standards sind nicht ein standard" nicht zu verstehen?
es gibt nun mal keinen einheitlichen standard bei sql. sql hat 6 standards definiert, davon sind 2 nicht frei erhältlich....soviel zum standard.

zu meiner ausdrucksweise:
ich würd sagen wer meint != ist keine art und weise wie man sich unter menschen unterhält, soll auch kein programmierforum besuchen!
 
Das ist auch kein Programmierforum, sondern ein Hardwareforum in dem auch viele "nicht-Programmierer" Hilfe suchen. Meiner Meinung nach sollten die Beiträge auch für diese problemlos verständlich sein.
Wenn du dich dadurch beleidigt fühlst, tut mir leid, war nicht so gemeint :p

Ob jetzt alle frei erhältlich sind spielt doch gar keine Rolle. Außerdem bauen die Standards ja wohl aufeinander auf, wieso sollte es keine neueren Versionen geben?! Ich sehe da keinen Unterschied zu HTML.
 
Zurück
Oben