4 Stimmen

Entferne alles nach dem String

Ich habe eine Tabelle mit einem Feld, das Beschreibungen für auf meiner Website verkauften Artikel enthält.

In unserer unendlichen Weisheit haben wir, als wir die Website zum ersten Mal gestartet haben, den Code für einen Facebook Like-Button in die Beschreibung eingefügt, jeder etwas anders, da er Produktinformationen im Link enthält. Jetzt haben wir etwa 400 Artikel mit dem Code darin.

Das ist ein Beispiel, mit dem ich zu tun habe:

-Fluffiger Schokoladen-Geschmack; Eine leichtere Art, Schokolade zu genießen
- 45% weniger Fett

< iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.oursite.com%2Findex.php%3Fmain\_page%3Dproduct\_info%26cPath%3D33\_36%26products\_id%3D106&layout=standard&show\_faces=true&width=450&action=like&colorscheme=light&height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true">< /iframe>

Ich möchte das und alles dahinter entfernen. Ich habe nach Beispielen mit REPLACE und / oder LEFT gesucht, aber ich finde nicht, was ich brauche, da ich nicht sehr versiert in der SQL-Sprache bin.



Es wird immer am Ende des products_description-Feldes sein, also muss ich mir keine Gedanken darüber machen, etwas danach zu speichern, sondern nur davor.

Das beste, worauf ich komme, ist

    SELECT LEFT(REPLACE('

``

aber das scheint nicht zu funktionieren.

Danke für jede Hilfe, die Sie zu diesem Thema anbieten können, da es mir viel weniger Zeit in Anspruch nehmen wird, als jede Beschreibung zu bearbeiten.

UPDATE: Habe immer noch keine Antwort gefunden, nachdem ich viele Variationen von dem ausprobiert habe, was vorgeschlagen wurde. Es läuft, aber es bearbeitet die Spalte nicht.

Ich habe auch das versucht, nachdem ich es auf einer anderen Seite gefunden habe. Das gleiche, aber dachte, es könnte jemandem eine Idee geben, wie man vorgehen könnte:

    select left(`products_description`,instr('

`` ```

2voto

Kamil Punkte 12561
SELECT 
trim( -- trim entfernt Leerzeichen vor und nach dem angegebenen String
    left(
        'some text < iframe', 
        locate('< iframe', 'some text < iframe') - 1
    )
);

Zur besseren Verständlichkeit habe ich den Abstand zwischen < und iframe nicht entfernt.

Sie können sich auch diesen Thread ansehen:

HTML-Tags aus Datensatz entfernen

aber dies ist eine Diskussion über das Entfernen von Tags, und das Beibehalten von Text zwischen den Tags. Wie auch immer, es wird für Sie funktionieren, da Sie nichts zwischen </code> und <code> haben.

1voto

Roman Pekar Punkte 98979
  1. REPLACE(' wird dir einfach ' ' geben - es sucht das erste Argument nach dem zweiten Argument und ersetzt es durch das dritte. * `LEFT(somestring, 0)` wird dir einen String mit 0 Zeichen geben

0voto

bcmacariola Punkte 106

Versuchen Sie dies:

select substr(your_raw_string, 0, instr(your_raw_string, '<iframe') -1)
from your_table

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X