sql >> Database >  >> RDS >> MariaDB

Hoe tekst af te kappen met een ellips in MariaDB

Soms vindt u dat de hoeveelheid tekst die in een databasekolom wordt geretourneerd, te lang is. Misschien wilt u een kort fragment van die tekst terugsturen, gevolgd door een weglatingsteken of drie stippen.

Gelukkig is dit relatief eenvoudig te doen in MariaDB.

Drie perioden

Hier is een voorbeeld van het toevoegen van drie punten (in plaats van een weglatingsteken) aan een kolom wanneer het aantal tekens in die kolom een ​​bepaalde lengte overschrijdt:

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

Resultaat:

+-------------------------------------+-----------------------------------------+
| Short Desc                          | Full Desc                               |
+-------------------------------------+-----------------------------------------+
| Purple. Includes left handed car... | Purple. Includes left handed carry box. |
| Blue. Includes right handed carr... | Blue. Includes right handed carry box.  |
| Approximate 45 minute waiting pe... | Approximate 45 minute waiting period.   |
| Approximate 30 minute waiting pe... | Approximate 30 minute waiting period.   |
| Wooden handle. Free wine glasses... | Wooden handle. Free wine glasses.       |
| Orange. Includes spare fingers.     | Orange. Includes spare fingers.         |
| Tied with vines. Very chewable.     | Tied with vines. Very chewable.         |
| Brown ceramic with solid handle.    | Brown ceramic with solid handle.        |
+-------------------------------------+-----------------------------------------+

In dit geval gebruiken we de CHAR_LENGTH() functie binnen een IF() functie om te bepalen of de string lang genoeg is om het inkorten te rechtvaardigen. We gebruiken dan de LEFT() functie binnen de CONCAT() functie om een ​​paar puntjes aan de korte beschrijving toe te voegen.

Een echt ellipsteken gebruiken

En hier is het weer, maar met een echt weglatingsteken in plaats van drie stippen:

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

Resultaat:

+-------------------------------------+-----------------------------------------+
| Short Desc                          | Full Desc                               |
+-------------------------------------+-----------------------------------------+
| Purple. Includes left handed car…   | Purple. Includes left handed carry box. |
| Blue. Includes right handed carr…   | Blue. Includes right handed carry box.  |
| Approximate 45 minute waiting pe…   | Approximate 45 minute waiting period.   |
| Approximate 30 minute waiting pe…   | Approximate 30 minute waiting period.   |
| Wooden handle. Free wine glasses…   | Wooden handle. Free wine glasses.       |
| Orange. Includes spare fingers.     | Orange. Includes spare fingers.         |
| Tied with vines. Very chewable.     | Tied with vines. Very chewable.         |
| Brown ceramic with solid handle.    | Brown ceramic with solid handle.        |
+-------------------------------------+-----------------------------------------+

De ellips neemt minder ruimte in beslag. Dit komt omdat het een enkel teken is, in tegenstelling tot de drie stippen (die drie afzonderlijke tekens zijn).

Alle rijen afkappen, ongeacht de lengte

Als u alle rijen moet afkappen, ongeacht hun lengte, hoeft u de IF() niet op te nemen functie.

In dit geval kan de code worden ingekort tot iets als dit:

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

Resultaat:

+--------------------+-----------------------------------------+
| Short Desc         | Full Desc                               |
+--------------------+-----------------------------------------+
| Purple. Include... | Purple. Includes left handed carry box. |
| Blue. Includes ... | Blue. Includes right handed carry box.  |
| Approximate 45 ... | Approximate 45 minute waiting period.   |
| Approximate 30 ... | Approximate 30 minute waiting period.   |
| Wooden handle. ... | Wooden handle. Free wine glasses.       |
| Orange. Include... | Orange. Includes spare fingers.         |
| Tied with vines... | Tied with vines. Very chewable.         |
| Brown ceramic w... | Brown ceramic with solid handle.        |
+--------------------+-----------------------------------------+

Laat de ellips weg

En als je de ellips/drie punten niet eens nodig hebt, kun je het zelfs nog verder inkorten, tot zoiets als dit:

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

Resultaat:

+-----------------+-----------------------------------------+
| Short Desc      | Full Desc                               |
+-----------------+-----------------------------------------+
| Purple. Include | Purple. Includes left handed carry box. |
| Blue. Includes  | Blue. Includes right handed carry box.  |
| Approximate 45  | Approximate 45 minute waiting period.   |
| Approximate 30  | Approximate 30 minute waiting period.   |
| Wooden handle.  | Wooden handle. Free wine glasses.       |
| Orange. Include | Orange. Includes spare fingers.         |
| Tied with vines | Tied with vines. Very chewable.         |
| Brown ceramic w | Brown ceramic with solid handle.        |
+-----------------+-----------------------------------------+

  1. De lijst met onthouden aanmeldingen en wachtwoorden verwijderen in SQL Server Management Studio

  2. Sta alle externe verbindingen toe, MySQL

  3. SQL Server Failover Cluster Installatie -4

  4. Wijzigingsmelding Oracle Database