Werte in [xx] ausfiltern

Max-Berater

Erfahrenes Mitglied
Habe aktuell das Problem, dass in einer Spalte immer Werte in diesen eckigen Klammern vorhanden sind [xxxxx]. Ich muss diese nun alle ausfiltern. Nutze Heidi SQL
 

Zvoni

Erfahrenes Mitglied
OK, mal was aus Prinzip:
1) Dein "nutze HeidiSQL" bringt GAR NIX!
Das ist ein FrontEnd für MySQL/MariaDB.
Was wir wissen müssen ist welche MySQL/MariaDB-Version du hast!

2) Beispiele?!?!?
Du hast ne Spalte, da sind Werte in eckigen Klammern, und du brauchst "nur" den Wert zwischen den Klammern?
Wie sieht so ein kompletter Eintrag in der Spalte aus?
[123456]?
blabalbal[123456]blublubb?

EDIT: Ungetestet
SQL:
SELECT SUBSTRING_INDEX(SUBSTRING(MeineSpalte,POSITION("[" IN MeineSpalte)+1),"]",1) FROM Tabelle

EDIT2: Und es wäre nicht schlecht, wenn du die Lösung markierst, falls das problem tatsächlich gelöst wird.
Hilft anderen Usern die dann diesen Thread finden
 
Zuletzt bearbeitet:

Yaslaw

alter Rempler
Moderator
"Asflitern". Also einfach alle anzeigen die das haben. Denn genau das heisst "Ausfiltern"
SQL:
SELECT *
FROM my_table
WHERE my_field LIKE '%[%]%'
 

Yaslaw

alter Rempler
Moderator
Und die Klammern selber?
Und nochmals. Was für eine DB hast du? Die Befehle von @Zvoni sind nur für MySQL/MariaDB. ei anderen Datenbanken funktioniert das nicht.

Berater, unter deinem Namen steht hier im Forum "Erfahrenes Mitglied". Du solltest langsam wissen, dass eine Fragestellung mit nur 2 Zeilen meistens mehr Fragen aufwirft, als du Antworten bekommst.
Jede Hilfestellung ist hier mit sovielen Annahmen unsererseits behaftet, dass es ein Zufallstreffer ist, wenn eine brauchbare Lösung dabei ist.

Ich will mal nicht so sein, ich wills auch mal versuchen. Annahme: Oracle DB
SQL:
select REGEXP_REPLACE(my_field, '\[.*?\]', '')
from my_table

Falls die [] leer stehen bleiben sollen
SQL:
select REGEXP_REPLACE(my_field, '\[.*?\]', '[]')
from my_table
 

Zvoni

Erfahrenes Mitglied
Und REGEXP_REPLACE gibts auch in MySQL8.0 bzw. MariaDB 10.4 (glaube ich)

EDIT: Ohne RegEx --> Ungetestet
SQL:
SELECT
    CONCAT(
         SUBSTRING_INDEX(MeineSpalte, "[", 1),
         SUBSTRING(MeineSpalte,POSITION("]" IN MeineSpalte)+1)
      ) As Gefiltert
FROM Tabelle
 
Zuletzt bearbeitet:

Zvoni

Erfahrenes Mitglied
Berater, unter deinem Namen steht hier im Forum "Erfahrenes Mitglied". Du solltest langsam wissen, dass eine Fragestellung mit nur 2 Zeilen meistens mehr Fragen aufwirft, als du Antworten bekommst.
Jede Hilfestellung ist hier mit sovielen Annahmen unsererseits behaftet, dass es ein Zufallstreffer ist, wenn eine brauchbare Lösung dabei ist.
Yepp: --> Bitte immer das Datenbanksystem bei den Fragen im Titel angeben
Ist deutlich beschrieben....