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. | +-----------------+-----------------------------------------+