Wie Felder mit bestimmten Kriterien ausschließen?

rhodes

Benutzer
Beiträge
8
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
 
Werbung:
Dafür verwendest Du am besten regular expressions:

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)
 
Werbung:
Oder einfach:
Code:
SELECT    *
FROM    tabelle
WHERE    spalte NOT LIKE '[media=youtube]%[/media]'
OR        spalte LIKE '[/media]%'
OR        spalte LIKE '%[media=youtube]'
 
Zurück
Oben