Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Wie Felder mit bestimmten Kriterien ausschließen?

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von rhodes, 7 März 2015.

  1. rhodes

    rhodes Benutzer

    Hallo zusammen,

    in einer Mysql DB gibt es eine Tabelle xf_posts mit einer Spalte message, die den eigentlichen Body eines Postings enthalten.

    Beispiel für Einträge in der Spalte messages

    Code:
    1: [media=youtube]vN6fY-FW5G8[/media]
    2: das ist ein ganz toller Text von posting 2
    3: [media=youtube]vN6fY-FW5G8[/media] das ist ein ganz toller Text von posting 3 mit Medium
    media=youtube steht dabei einfach für einen Medienlink, in dem Fall einen youtube-Link. Das System ist Xenforo, also dasselbe, auf dem dieses Forum basiert.

    Ich möchte nun eine SQL Abfrage erstellen, die alle messages ausliest, die nicht nur aus einem Medienlink bestehen, sondern tatsächlich auch getippten Text enthalten, also im Beispiel oben die items 2+3.

    Es müsste vermutlich mit einer
    ..where message NOT LIKE...funktionieren, aber mir ist nicht klar wie ich der SQL Abfrage beibringen soll, dass sie eben die postings ausfiltert, die nur aus media..media bestehen.

    Bin für jeden Tipp dankbar.

    rhodes
     
  2. Walter

    Walter Administrator Mitarbeiter

  3. akretschmer

    akretschmer Datenbank-Guru

    Genau.

    Code:
    test=*# select * from rhodes ;
     id |  t
    ----+------------------------------------------------------------------------------------------
      1 | [media=youtube]vN6fY-FW5G8[/media]
      2 | das ist ein ganz toller Text von posting 2
      3 | [media=youtube]vN6fY-FW5G8[/media] das ist ein ganz toller Text von posting 3 mit Medium
    (3 rows)
    
    Time: 0,177 ms
    test=*# select *, regexp_replace(t, '\[media.*\/media\]','') from rhodes ;
     id |  t  |  regexp_replace
    ----+------------------------------------------------------------------------------------------+--------------------------------------------------------
      1 | [media=youtube]vN6fY-FW5G8[/media]  |
      2 | das ist ein ganz toller Text von posting 2  | das ist ein ganz toller Text von posting 2
      3 | [media=youtube]vN6fY-FW5G8[/media] das ist ein ganz toller Text von posting 3 mit Medium |  das ist ein ganz toller Text von posting 3 mit Medium
    (3 rows)
    
    
     
  4. ukulele

    ukulele Datenbank-Guru

    Oder einfach:
    Code:
    SELECT    *
    FROM    tabelle
    WHERE    spalte NOT LIKE '[media=youtube]%[/media]'
    OR        spalte LIKE '[/media]%'
    OR        spalte LIKE '%[media=youtube]'
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden