MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

So kürzen Sie Text mit Auslassungspunkten in MariaDB

Manchmal stellen Sie möglicherweise fest, dass die in einer Datenbankspalte zurückgegebene Textmenge zu lang ist. Vielleicht möchten Sie nur einen kurzen Ausschnitt dieses Textes zurückgeben, gefolgt von Auslassungspunkten oder drei Punkten.

Glücklicherweise ist dies in MariaDB relativ einfach.

Drei Perioden

Hier ist ein Beispiel für das Anhängen von drei Punkten (anstelle eines Auslassungszeichens) an eine Spalte, wenn die Anzahl der Zeichen in dieser Spalte eine bestimmte Länge überschreitet:

SELECT 
    IF(CHAR_LENGTH(ProductDescription) > 32, 
        CONCAT(LEFT(ProductDescription, 32),"..."), 
        ProductDescription) AS "Short Desc",
    ProductDescription AS "Full Desc"
FROM Products; 

Ergebnis:

+------------------------------------+-------- ---------------------------------+| Kurze Beschreibung | Vollständige Beschreibung |+-------------------------------------+-------- ---------------------------------+| Lila. Inklusive Linkshänder... | Lila. Inklusive Tragebox für Linkshänder. || Blau. Beinhaltet Rechtshänder... | Blau. Inklusive Tragebox für Rechtshänder. || Ungefähr 45 Minuten Wartezeit pro ... | Ungefähr 45 Minuten Wartezeit. || Ungefähr 30 Minuten Wartezeit pro ... | Ungefähr 30 Minuten Wartezeit. || Holzgriff. Kostenlose Weingläser... | Holzgriff. Kostenlose Weingläser. || Orange. Inklusive Ersatzfinger. | Orange. Inklusive Ersatzfinger. || Gebunden mit Reben. Sehr kaubar. | Gebunden mit Reben. Sehr kaubar. || Braune Keramik mit massivem Griff. | Braune Keramik mit massivem Griff. |+--------------------------------------------------+---------- -------------------------------+

In diesem Fall verwenden wir den CHAR_LENGTH() Funktion innerhalb eines IF() Funktion, um festzustellen, ob die Zeichenfolge lang genug ist, um sie zu kürzen. Wir verwenden dann das LEFT() Funktion innerhalb der CONCAT() Funktion, um ein paar Punkte an die Kurzbeschreibung anzuhängen.

Ein echtes Auslassungszeichen verwenden

Und hier ist es noch einmal, aber mit einem tatsächlichen Auslassungszeichen anstelle von drei Punkten:

SELECT 
    IF(CHAR_LENGTH(ProductDescription) > 32, 
        CONCAT(LEFT(ProductDescription, 32),"…"), 
        ProductDescription) AS "Short Desc",
    ProductDescription AS "Full Desc"
FROM Products; 

Ergebnis:

+------------------------------------+-------- ---------------------------------+| Kurze Beschreibung | Vollständige Beschreibung |+-------------------------------------+-------- ---------------------------------+| Lila. Beinhaltet Linkshänder… | Lila. Inklusive Tragebox für Linkshänder. || Blau. Beinhaltet Rechtshänder… | Blau. Inklusive Tragebox für Rechtshänder. || Ungefähr 45 Minuten Wartezeit pro… | Ungefähr 45 Minuten Wartezeit. || Ungefähr 30 Minuten Wartezeit pe… | Ungefähr 30 Minuten Wartezeit. || Holzgriff. Kostenlose Weingläser… | Holzgriff. Kostenlose Weingläser. || Orange. Inklusive Ersatzfinger. | Orange. Inklusive Ersatzfinger. || Gebunden mit Reben. Sehr kaubar. | Gebunden mit Reben. Sehr kaubar. || Braune Keramik mit massivem Griff. | Braune Keramik mit massivem Griff. |+--------------------------------------------------+---------- -------------------------------+

Die Auslassungspunkte benötigen weniger Platz. Dies liegt daran, dass es sich um ein einzelnes Zeichen handelt, im Gegensatz zu den drei Punkten (die drei separate Zeichen sind).

Alle Zeilen abschneiden, unabhängig von der Länge

Wenn Sie alle Zeilen unabhängig von ihrer Länge abschneiden müssen, müssen Sie IF() nicht einschließen Funktion.

In diesem Fall kann der Code folgendermaßen abgekürzt werden:

SELECT 
    CONCAT(LEFT(ProductDescription, 15), '...') AS "Short Desc",
    ProductDescription AS "Full Desc"
FROM Products; 

Ergebnis:

+--------------------+-------------------- ----------------+| Kurze Beschreibung | Vollständige Beschreibung |+--------------------+-------------------- ----------------+| Lila. Einschließen... | Lila. Inklusive Tragebox für Linkshänder. || Blau. Enthält ... | Blau. Inklusive Tragebox für Rechtshänder. || Ungefähr 45 ... | Ungefähr 45 Minuten Wartezeit. || Ungefähr 30 ... | Ungefähr 30 Minuten Wartezeit. || Holzgriff. ... | Holzgriff. Kostenlose Weingläser. || Orange. Einschließen... | Orange. Inklusive Ersatzfinger. || Gebunden mit Reben... | Gebunden mit Reben. Sehr kaubar. || Braune Keramik m... | Braune Keramik mit massivem Griff. |+--------------------+----------------------------------- --------------+

Lassen Sie die Auslassungspunkte weg

Und wenn Sie die Auslassungspunkte/drei Punkte nicht einmal benötigen, können Sie sie sogar noch weiter verkürzen, etwa so:

SELECT 
    LEFT(ProductDescription, 15) AS "Short Desc",
    ProductDescription AS "Full Desc"
FROM Products; 

Ergebnis:

+------------+------------------------------------ -------------+| Kurze Beschreibung | Vollständige Beschreibung |+------------+------------------------------------ -------------+| Lila. Einschließen | Lila. Inklusive Tragebox für Linkshänder. || Blau. Enthält | Blau. Inklusive Tragebox für Rechtshänder. || Ungefähr 45 | Ungefähr 45 Minuten Wartezeit. || Ungefähr 30 | Ungefähr 30 Minuten Wartezeit. || Holzgriff. | Holzgriff. Kostenlose Weingläser. || Orange. Einschließen | Orange. Inklusive Ersatzfinger. || Gebunden mit Reben | Gebunden mit Reben. Sehr kaubar. || Braune Keramik mit | Braune Keramik mit massivem Griff. |+----------------+------------------------------ -----------+